zoukankan      html  css  js  c++  java
  • [一天一个设计模式]-[装饰器模式]

    装饰器模式的可以在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能),它属于对象结构型模式。

    装饰器模式和适配器模式的区别:

    适配器模式是把一个类型转变成另一个类型,并且保持原类型的功能不变

    装饰器模式是把一个类型的功能进行扩展,类型保持不变。

    举个栗子:一个小朋友要穿衣服

    interface Child{
        void wear();
    }
    
    class Li implements Child{
        @Override
        void wear(){
            sout("I'm Li");
        }
    }
    
    class JacketDecorator implements Child{
        Child child;
        public JacketDecorator(Child child){
            this.child = child;
        }
        
        @Override
        void wear(){
            child.wear();
            dosomething();
        }
        
        void dosomething(){
            sout("I wear Jacket.");
        }
        
    }
    
    class TrousersDecorator implements Child{
        Child child;
        public TrousersDecorator(Child child){
            this.child = child;
        }
        
        @Override
        void wear(){
            child.wear();
            dosomething();
        }
        
        void dosomething(){
            sout("I wear Trousers.");
        }
        
    }
    
    
    
    main(){
        Child li = new Li();
        JacketDecorator jd = new JacketDecorator(li);
        jd.wear();
        
        TrousersDecorator td = new TrousersDecorator(jd);
        td.wear();
        
    }
    
    
  • 相关阅读:
    (转载)链表环中的入口点 编程之美 leecode 学习
    leecode single numer
    leecode 树的平衡判定 java
    Let the Balloon Rise
    Digital Roots
    大数加法,A+B
    小希的迷宫
    畅通工程
    lintcode596- Minimum Subtree- easy
    lintcode597- Subtree with Maximum Average- easy
  • 原文地址:https://www.cnblogs.com/A-yes/p/12026937.html
Copyright © 2011-2022 走看看