zoukankan      html  css  js  c++  java
  • 设计模式---装饰模式

    今天学习了装饰模式,做个笔记。。装饰模式的基础概念可以参考:https://blog.csdn.net/cjjky/article/details/7478788

    这里,就举个简单例子

    孙悟空有72变,但是它平时是猴子,遇到情况下,它可以变成蝴蝶等等

    因此提供的对象接口为:SunWukong

    package com.designmodel.decorator;
    
    public interface SunWukong {
    
        void change();
    }

    然后是一个具体的对象:Monkey

    package com.designmodel.decorator;
    
    public class Monkey implements SunWukong {
    
        public void selfIntroduce() {
            System.out.println("我是孙悟空, 我有72变");
        }
        
        @Override
        public void change() {
            System.out.println("我变");
        }
    
    }

    接下来是装饰抽象类:Transformations

    package com.designmodel.decorator;
    
    public class Transformations implements SunWukong {
    
        private SunWukong swk;
        
        public Transformations(SunWukong swk) {
            super();
            this.swk = swk;
        }
    
        @Override
        public void change() {
            swk.change();
        }
    
    }

    最后是两个具体的装饰对象:

    package com.designmodel.decorator;
    
    public class XiangFei extends Transformations  {
    
        public XiangFei(SunWukong swk) {
            super(swk);
        }
        
        public void nowIs() {
            System.out.println("我现在变成了香妃");
        }
    }
    package com.designmodel.decorator;
    
    public class ButterFly extends Transformations {
    
        public ButterFly(SunWukong swk) {
            super(swk);
        }
    
        public void nowIs() {
            System.out.println("我现在变成了蝴蝶");
        }
    }

    客户端测试:

    package com.designmodel.decorator;
    
    public class MainApp {
    
        public static void main(String[] args) {
    
            Monkey monkeyKing = new Monkey();
            monkeyKing.selfIntroduce();
            System.out.println("我要变了...");
            XiangFei xf = new XiangFei(monkeyKing);
            xf.nowIs();
         System.out.println("我继续变...");
         ButterFly bf = new ButterFly(monkeyKing);
         bf.nowIs(); } }

    输出结果:

    我是孙悟空, 我有72变
    我要变了...
    我现在变成了香妃
    我继续变...
    我现在变成了蝴蝶

    装饰模式就是这个意思。。。

  • 相关阅读:
    centos7 查看启动ntp服务命令
    集群重启某一主机下所有osd down解决办法
    不卸载ceph重新获取一个干净的集群环境
    centos7 中文乱码解决方法
    ceph-deploy mon add 失败
    批量删除osd的shell脚本
    搭建自己的框架WedeNet(二)
    搭建自己的框架WedeNet(一)
    多线程总结
    C#中操作单个cookie和cookie字典
  • 原文地址:https://www.cnblogs.com/miantiaoandrew/p/9077872.html
Copyright © 2011-2022 走看看