装饰器模式
2022-08-01 15:51:53 11 举报
AI智能生成
装饰器模式
作者其他创作
大纲/内容
定义
给原始类添加增强功能
特点
装饰器模式还有一个特点,那就是可以对原始类嵌套使用多个装饰器
大多和业务有关系
装饰器模式和代理模式的区别
装饰器模式和代理模式都只存在一个代理类或者装饰器时,基本一致
但当需要的功能在无线叠加时,装饰器更为适用,如计算总金额时,利用装饰器,可以添加红包装饰器、满减装饰器、优惠券装饰器,这样,避免多种功能都耦合在一个代理类中,造成高耦合低内聚
装饰器结构图
Component为统一接口,也是装饰类和被装饰类的基本类型。
ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。
Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。
ConcreteDecorator是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。
ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。
Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。
ConcreteDecorator是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。
案例地址
装饰器模式码云代码地址
参考文献
装饰器模式的使用总结
0 条评论
下一页