装饰模式

装饰模式:

1.动态的给一个对象添加一些额外的功能,但同时又不改变其结构。这种设计模式属于结构型模式,是对现有的类的有一个包装。就新增功能来说,他比创建子类更加的灵活。

2.主要解决:由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

3.优点:

(1)装饰模式可以提供比继承更多的灵活性

(2)可以通过一种动态的方式扩展一个对象的功能,在运行时选择不同的装饰器,从而实现不同的行为。

(3)通过使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出很多不同行为的组合。可以使用多个具体装饰类来装饰同一对象,得到功能强大的对象。

(4)具体构件类与具体装饰类可以独立变化,用户可以根据新的具体构建类和具体装饰类,在使用时再对其进行组合,原有代码无需改变,符合“开闭原则”

缺点:

(1)会产生很多的小对象,增加了系统的复杂性

(2)这种比继承更加灵活的特性,同时以为着装饰模式比继承更加容易出错,拍错也很困难,对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为繁琐。

4、装饰者的使用场景

  1、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

  2、需要动态地给一个对象增加功能,这些功能也可以动态地被撤销。  当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。

参考:https://www.cnblogs.com/xinye/p/3910149.html

 

你可能感兴趣的:(设计模式)