装饰者模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰者模式相关的知识,希望对你有一定的参考价值。

装饰者模式

 

装饰,是女人经常需要做的事情,也是男人经常需要等待的事情。

 

装饰后的女人,变得漂亮、好看了,但“她还是她”

 

这是装饰者模式的特性

 

动态添加职责和功能,换句话讲,在女子长成之后才去修饰她,而非生下来即如此

 

但在程序语言中再怎么面向对象,它始终也是计算机语言,所以为了实现装饰前后还是同个类型的缘故,这些装饰的主体和饰品都必须是同一个类型下的子类

 

通常是通过

Decorator d = new Decorator(people);
// people 和 d 都是同一个父类下的子类

 

熟悉io对象的人应该知晓,这实际上就是个递归持有对象实例的方式

 

实际上就是a、b、c都是继承于e,而a中包含b的私有变量,b中包含c的私有变量

 

这样就形成一个递归链,导致对于a的操作可以间接作用到b,再到c

 

因而我们可以保有这三者的特性,进行组合操作

abstract class Super {
    protected Super instance;    
}

class A extend Super {
    public A(Super super) {
        instance = super;
    }
}

class B extend Super {
    public B(Super super) {
        instance = super;
    }
}

class C extend Super {
    public C(Super super) {
        instance = super;
    }
}

public class Test {
    public static void main(String[] args) {
        C c = new C(null);
        B b = new B(c);    
        Super a = new A(b);
  }
}

 

以上是关于装饰者模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之装饰者模式

设计模式整理_装饰者模式

设计模式-装饰者模式(Go语言描述)

设计模式-装饰者模式(Go语言描述)

装饰者模式

设计模式 之 装饰者模式