1.定义:将一个类的接口转换成希望的另一个接口。使原来由于接口不兼容而不能一起工作的类可以一起工作。
2.补充:通常用于需要的类必须从抽象类派生,但现有的类不是;
Adapter模式最终提供了具有所需接口的包装类;
Adapter模式最常见的用途就是保持多态性;
3.实现:将原有类包含在另一个类中,让包含类与需要的接口匹配,调用被包含类的方法。
原有类中没有实现的方法也可以在包含类中实现。
4.两种适配方法:对象Adapter模式:使用包含,可以适配被包含类及其子类;
类Adapter模式 :多重继承,除了c++,很多语言都不支持多重继承。
5.Adapter模式与Facade模式比较:
共同点:都是用对象将遗留系统包装起来,使其更容易使用;
都存在已有的类;
不同点:Adapter模式必须按某个接口设计,Facade模式的动机是越简单越好;
Adapter模式可能需要保持多态行为,Facade模式不需要;
结论:Facade模式简化了接口,而Adapter模式则将一个已有的接口转化为另一个。
6.使用适配模式一般在开发后期或维护期。有点无奈,有点亡羊补牢的感觉。
在设计阶段或开发初期,应该有统一的规范,如果有可修改的功能相同的不同接口已存在,则应该首先考虑通过重构统一接口。
对一些第三方组件可以直接考虑使用适配模式统一接口。第一方是自己,第二方是系统。
7..Net中的DataAdapter,适配了不同的数据源,得到了统一的DataSet,即xml格式数据。使的不用关心数据库的数据细节。