装饰模式

装饰模式定义如下:

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、需要为一批的类进行改装或者家装功能。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 Attach additional responsibilities to an object dynami...
    Whyn阅读 9,702评论 0 3
  • 1 概述 在一个项目中,你会有非常多的因素考虑不到,特别是业务的变更,不时的冒出一个需求是很正常的情况。有三个继承...
    今晚打肉山阅读 2,481评论 0 0
  • 定义 装饰模式(Decorator Pattern)的定义如下: Attach additional respon...
    oneape15阅读 2,435评论 0 1
  • 设计模式———装饰模式 例子:成绩单报告 在面向对象的设计中,如果超过两层继承,可能就出设计问题了。这是经验总结,...
    书笔年华阅读 3,081评论 0 0
  • 11.16上午召开州质监系统交流座谈会;下午在西昌实地考察项目,我县质监股长丹增尼玛全程参与。我给州质监局长袁亮请...
    泰民365阅读 767评论 0 0