zoukankan      html  css  js  c++  java
  • Java装饰模式

    首先,直接代码说话

      

    //广阔的空间里,到处都是美好的气息
    interface
    BroadItch{ void getItch(); }
    //我们可以直接去个好地方
    class Library implements BroadItch{ @Override public void getItch() { System.out.println("图书馆看书好舒服!"); } }
    //也可以创造个工具,帮我们导引去找个地方
    class HomeBuilder implements BroadItch{ private BroadItch broadItch;//保持对抽象的引用 public HomeBuilder(BroadItch broadItch) { this.broadItch = broadItch; } public void getItch() { broadItch.getItch(); } }
    //用工具去找个学校
    class School extends HomeBuilder{ public School(BroadItch broadItch) { super(broadItch); } @Override public void getItch() { System.out.println("早个学校"); } }
    //或者去找个地方做礼拜
    class Temple extends HomeBuilder { public Temple(BroadItch broadItch) { super(broadItch); } @Override public void getItch() { System.out.println("做礼拜去!"); } }
    /**
     * Created by nicknailo on 2018/4/14.
     */
    public class Decorator {
    
        public static void main(String args[]) {
    
            BroadItch aa,bb,bb1,cc,cc1;
    
            aa = new Library();
            aa.getItch();
            System.out.println("---------------------");
            bb = new School(aa);
            bb1 = new HomeBuilder(bb);
            bb1.getItch();
            System.out.println("---------------------");
            cc = new Temple(bb1);
            cc1 = new HomeBuilder(cc);
            cc1.getItch();
    
    
        }
    
    }
    

      结果输出

    装饰者模式,针对单个对象,需要我们外部构造一个装饰者,然后把我们需要的示例加入装饰者的构造中,程序依次直接调用,外部看不出来,对象是怎么运行的。

  • 相关阅读:
    MVVM
    vue-cli初始化项目2.x|3.x
    逻辑覆盖
    white box白盒测试
    black box黑盒测试
    总结回顾js arr的常见方法以及相关的使用场景(一)
    js 原生功底 (一)
    markdown 语法总结(一)
    阿里一面,面试官想看到的究竟是什么,带你揭秘!!!!
    关于Axios 源码你想了解的 在这儿
  • 原文地址:https://www.cnblogs.com/nicknailo/p/8834091.html
Copyright © 2011-2022 走看看