设计模式-结构型设计模式-1.装饰器设计模式(php)
设计模式类型
结构型设计模式
设计模式名称
装饰器设计模式
模式定义
装饰器模式(Decorator)属于结构型模式,又叫做包装模式。通过装饰器类将扩展的功能组件包装起来,通过装饰器类来为客户端提供透明的扩展。
装饰器模式是类的继承替代方案,就增加功能或组合功能上来说,比子类继承更加灵活。
UML
1、抽象的组件角色
具体的组件对象和抽象的装饰器共同的接口,这样客户端就能以相同的方式在组件对象与装饰器对象中交互
2、具体的组件角色
实现了抽象组件角色的具体对象,一般情况下具有基本的功能
3、抽象的装饰器角色
继承了抽象组件角色,并且用户抽象组件的一个实例的引用。装饰对象接受所有客户端的请求,并把这些请求转发给具体的组件对象,这样,就能在真实对象调用前,后增加新的功能。
4、具体的装饰器角色
负责给构件对象增加新的特性或责任。
应用场景
1、新特性的扩展同时衍生出大量的子类时,系统变得臃肿时
2、动态的扩展与组合不同的特性或组件,并将这种组合关系透明的交给客户端
优缺点
优点
1、动态的为一个对象添加新的特性或指责,比子类继承更加灵活
2、装饰类之间低耦合,并可扩展新职责的装饰器类,符合开放封闭原则
3、动态的删除或新增对象的指责
缺点
1、多层装饰时业务复杂度会变高
git地址
https://github.com/wonlon/Design-patterns