适配器模式(Adapter Pattern)
2017-12-18 19:59
246 查看
定义:
适配器模式,即定义一个包装类,用于包装不兼容接口的对象
解决的问题:
原本由于接口不兼容而不能一起工作的那些类可以在一起工作
类别:
类的适配器模式和对象的适配器模式
uml类图:
模式组成
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口
需要适配的类(Adaptee):需要适配的类或适配者类
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口
优点:
更好的复用性
系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
透明、简单
客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单 & 更直接
更好的扩展性
在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
解耦性
将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码
符合开放-关闭原则
同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待适配类
缺点:
过多的使用适配器,会让系统非常零乱,不易整体进行把握
举个栗子
定义目标接口
定义需要适配的类
定义适配器
客户端调用
适配器模式,即定义一个包装类,用于包装不兼容接口的对象
解决的问题:
原本由于接口不兼容而不能一起工作的那些类可以在一起工作
类别:
类的适配器模式和对象的适配器模式
uml类图:
模式组成
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口
需要适配的类(Adaptee):需要适配的类或适配者类
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口
优点:
更好的复用性
系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
透明、简单
客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单 & 更直接
更好的扩展性
在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
解耦性
将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码
符合开放-关闭原则
同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待适配类
缺点:
过多的使用适配器,会让系统非常零乱,不易整体进行把握
举个栗子
定义目标接口
interface Target { public void request(); }
定义需要适配的类
class Adaptee { public void specificRequest() { } }
定义适配器
class Adatper implements Target { private Adaptee ad; @Override public void request() { ad.specificRequest(); } }
客户端调用
Target t = new Adatper(); t.request();
相关文章推荐
- 适配器模式(Adapter Pattern)(轉)
- C#设计模式——适配器模式(Adapter Pattern)
- 设计模式 - Adapter Pattern(适配器模式)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- Head First 设计模式 (七)适配器模式(adapter pattern) C++实现
- 设计模式之六:适配器模式(Adapter Pattern)
- 适配器模式(Adapter pattern)
- 适配器模式(Adapter Pattern)(二):HeadFirst中的火鸡冒充鸭子
- 【设计模式】适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)(Terrylee)
- 适配器模式(Adapter Pattern)
- Java设计模式之适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)
- java设计模式---适配器模式(Adapter pattern)
- 适配器模式(Adapter Pattern)--不兼容结果的协调
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)
- 适配器模式(Adapter pattern)
- 适配器模式【Adapter Pattern】
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)