设计模式—适配器模式
2018-01-31 21:54
232 查看
定义
适配器模式把一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的的两个类能够在一起工作
使用场景
系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容
想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作
需要一个统一的输出接口,而输入端的类型不可预知
关键点
一个目标角色—所期待得到的接口
一个需要被转换的角色—需要适配的接口
适配器角色—把源接口转换成目标接口,不可以是接口,只能是类。
实现
以电压转换为例
使用
小结
优点
更好的复用性—系统需要现有的类,而此类的接口不符合系统的需要,通过适配器模式就可以让这些功能得到更好的复用性
更好的扩展性—在实现适配器功能的时候,可以调用自己剋发的功能,从而自然的扩展系统的功能
缺点
过多的使用适配器,会让系统非常凌乱,不易整体把握。
适配器模式把一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的的两个类能够在一起工作
使用场景
系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容
想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作
需要一个统一的输出接口,而输入端的类型不可预知
关键点
一个目标角色—所期待得到的接口
一个需要被转换的角色—需要适配的接口
适配器角色—把源接口转换成目标接口,不可以是接口,只能是类。
实现
以电压转换为例
/** * 目标接口角色—需要的5伏电压 */ public interface FiveVolt { /** * 需要5伏电压 */ public int getVolt5(); }
/** * 需要被转换角色 */ public class Volt220 { /** * 对外输出的220电压接口 */ public int getVolt220() { return 220; } }
/** * 适配器角色—将220伏电压转换成需要的5伏电压 */ public class VoltAdapter implements FiveVolt { private Volt220 volt220; public VoltAdapter(Volt220 volt220) { this.volt220 = volt220; } @Override public int getVolt5() { return 5; } }
使用
VoltAdapter adapter = new VoltAdapter(new Volt220()); adapter.getVolt5();
小结
优点
更好的复用性—系统需要现有的类,而此类的接口不符合系统的需要,通过适配器模式就可以让这些功能得到更好的复用性
更好的扩展性—在实现适配器功能的时候,可以调用自己剋发的功能,从而自然的扩展系统的功能
缺点
过多的使用适配器,会让系统非常凌乱,不易整体把握。
相关文章推荐
- 设计模式——适配器模式
- 设计模式之适配器模式
- 慕课网----大话PHP设计模式 四(适配器模式,数据对象映射模式,观察者模式)
- 设计模式之适配器模式
- 设计模式----适配器模式 实例
- 结构型设计模式---适配器模式(adapter)
- 设计模式之适配器模式
- 菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同
- 设计模式(五)适配器模式Adapter(结构型)
- <设计模式6>适配器模式
- IOS设计模式之三(适配器模式,观察者模式)
- C#设计模式(7)——适配器模式
- 深入浅出设计模式之适配器模式
- 设计模式——适配器模式
- 设计模式之接口型适配器模式
- 设计模式学习(七)——适配器模式
- c#设计模式 适配器模式详细介绍
- 深入理解JavaScript系列(39):设计模式之适配器模式
- JAVA设计模式(6) —<结构型>适配器模式(Adapter)