装饰者、适配器和外观模式详解
来源:互联网 发布:生化危机6 电影 知乎 编辑:程序博客网 时间:2024/05/17 03:44
设计模式中,装饰者、适配器和外观模式这三种模式运用的比较多,但三者有一定的相似性,所以比较不好区分,今天我就来详细谈谈这三个模式。
1、装饰者模式
《设计模式》上的定义为:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案,装饰者模式的关键点是装饰者和被装饰者对象有相同的超类型,所以可以在任何需要原始对象的场合用装饰过的对象代替它。装饰者可以在所委托被装饰者的行为之前与之后,加上自己的行为,以达到特定的目的。
public abstract class component //元素超类,提供类型和方法{public String com_description(){}public abstract int get_weight(){}}public abstract class special_comp extends component //继承自超类,修饰对象的父类{public String com_description(){}}public class comp_1 extends special_comp //修饰对象{component com;public comp_1(component com){this.com=com;}public String com_description(){ //***实现}public abstract int get_weight(){//***实现}}修饰对象和被修饰对象都拥有一个共同的超类,这使得修饰对象和被修饰对象拥有共同的类型,就可以通过超类来传递子类对象,这样就可以它们之间可以相互包含。
2、适配器模式
定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间,适配器模式包括对象适配器和类适配器,两者实现的方式有很大的区别,类适配器是通过继承的方式,使目标接口和被适配接口作为适配器的父类(多继承),而对象适配器则是通过对目标结构的重新实现,并与被适配器是组合关系,这样做的优势是被适配者的任何子类我们都可以配接该适配器。
对象适配器:适配器与被适配对象是组合关系,适配器与适配对象是实现关系(继承);
类适配器:适配器对象继承继承自适配对象和被适配对象。
3、外观模式
通过提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。我们只是把实现一个功能的所有重复繁琐的操作封装成一个简单的接口,而对子系统没有影响。
简单的组合关系(has-a)关系就可以实现。
三者区别:
装饰者模式不会改变类的接口,他只是每次封装时都会增加新的责任;
配接器模式改变接口但功能不增不减,外观模式则是通过一个类管理所有的子系统,然后提供一个接口是接口简单,两者的目的不一样,一个为了改变接口、一个为了使接口简单。
- 装饰者、适配器和外观模式详解
- 适配器模式&装饰者模式&外观模式
- 装饰者,适配器,代理和外观模式的区别
- 适配器 装饰者 外观模式小结
- 适配器模式、装饰模式、代理模式和外观模式
- 适配器和外观模式
- 适配器和外观模式
- 装饰器模式、代理模式、适配器模式和外观模式的联系与区别
- 适配器模式和装饰者模式
- 适配器模式和外观模式
- 适配器模式和外观模式
- 适配器模式和外观模式
- 适配器模式和外观模式
- 适配器模式和外观模式
- 适配器模式和外观模式
- 外观模式和适配器模式
- 适配器模式和外观模式
- 代理模式 适配器模式 外观模式 装饰模式 区别 比较
- PAT-B 1007. 素数对猜想
- KNN(二)--近似最近邻算法ANN
- 连接器脚本详解
- The Text Splitting
- 第四天:关看门狗、设置栈、控制icache、重定位、链接脚本
- 装饰者、适配器和外观模式详解
- Android 6.0 telephony 状态分析
- 字符串搜索之BMH 算法(伪代码)
- PAT-B 1008. 数组元素循环右移问题
- 2.特点
- .css文件中各样式写法:html标签,id,class
- 【Redis系列】Redis频道发布与消息订阅
- Java提取域名或URL中的一级域名二级域名......
- Struts2 2.5.2的套路