美文网首页
装饰者模式

装饰者模式

作者: CoderZzbJohn | 来源:发表于2018-12-13 17:16 被阅读0次

    Source:被装饰对象
    Decorator:装饰者父类,继承Source。该对象中有一个source实例
    DecoratorA: 具体的装饰者。继承Decorator,自己的方法+supper中的方法。
    DecoratorB: 具体的装饰者。继承Decorator,自己的方法+supper中的方法。

    public class Source {
        public void sing(){
            System.out.println("sing..");
        }
    }
    
    public class Decorate extends Source {
    
        private Source source;
    
        public Decorate(Source source) {
            this.source = source;
        }
    
        @Override
        public void sing() {
            source.sing();
        }
    }
    
    public class DecorateA extends Decorate {
    
        public DecorateA(Source source) {
            super(source);
        }
    
        @Override
        public void sing() {
            dance();
            super.sing();
        }
    
        public void dance() {
            System.out.println("dance...");
        }
    }
    
    
    public class DecorateB extends Decorate {
    
        public DecorateB(Source source) {
            super(source);
        }
    
        @Override
        public void sing() {
            cry();
            super.sing();
        }
    
        public void cry() {
            System.out.println("cry...");
        }
    }
    
    public class Client {
        public static void main(String[] args) {
            Source source = new Source();
            Source decorateA = new DecorateB(new DecorateA(source));
            decorateA.sing();
        }
    }
    

    相关文章

      网友评论

          本文标题:装饰者模式

          本文链接:https://www.haomeiwen.com/subject/avubhqtx.html