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变
    我要变了...
    我现在变成了香妃
    我继续变...
    我现在变成了蝴蝶

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

  • 相关阅读:
    ELF 格式简介
    gdb 使用说明;ARM 汇编
    博士研究生的组会PPT汇报相关-labgirls
    浅尝辄止·认识Blazor及基础使用
    VBA·Function的基础使用
    WCF·无法自动进入并单步执行服务器。调试器未能在服务器进程中停止。
    Word·查找任意汉字的方法
    VBA·编译错误:ByRef参数类型不符
    排坑·QQ浏览器打开MD文件时显示下载不能直接打开
    MSSQL·PIVOT关键字实现列转行
  • 原文地址:https://www.cnblogs.com/miantiaoandrew/p/9077872.html
Copyright © 2011-2022 走看看