美文网首页
装饰模式

装饰模式

作者: _fan凡 | 来源:发表于2019-03-27 00:02 被阅读0次

装饰模式定义如下:

Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionality.

在保证提供相同的接口的前提下,动态的给一个对象添加额外的职责。装饰器比子类提供了更灵活的功能扩展。

装饰器通用类图如下:


15.png

四个角色如下:

1、Component抽象构件:是一个接口或者抽象类,定义我们最核心的对象,最原始的对象。 在装饰模式中,必然有一个充当最原始、最核心、最基本的接口或者抽象类来作为Component构件。

2、ConcreteComponent:具体构件,ConcreteComponent是最核心、最原始、最基本的接口或者抽象类的实现,装饰器模式要装饰的就是它。

3、Decorator 装饰角色:一般是一个抽象类,实现接口或者抽象方法,但它里面不一定有抽象方法,在它的属性里面必然有一个private的变量只想Component抽象构件

4、ConcreteDecorator:具体装饰角色,实现Decorator的方法

注意,在ConcreteDecorator中原始方法和装饰方法的执行顺序是固定的,根据业务可以具体来定,通过重载父类的方法来实现多种执行顺序。

装饰模式的优点:

1、装饰类和被装饰类可以独立发展,不会相互耦合。两者可以相互不用关心对方的存在。

2、装饰模式是继承关系的一种替代方案。看装饰类Decorator的构造方法,返回的对象永远是Component,也就是不管装饰多少层,都没有问题。是is-a的关系。

3、装饰模式可以动态的扩展一个实现类的功能。

装饰模式的缺点:

1、多层装饰模式是比较复杂的,类似于递归调用,一层一层的执行。

装饰模式的使用场景:

1、需要扩展一个类的功能或者增加附加功能,要准守开闭原则,关闭修改,开放扩展。

2、需要动态的给一个对象增加功能,这些功能可以在动态的插销。

3、需要为一批的类进行改装或者家装功能。

相关文章

网友评论

      本文标题:装饰模式

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