android设计模式之适配器模式
来源:互联网 发布:vr与游戏美工 编辑:程序博客网 时间:2024/05/17 01:16
适配器模式
Adapter(别名Wrapper)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。
要点:
1. 适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。
Adaptee:现在需要适配的已经存在的接口
Adapter:对Adaptee 的接口与Target接口进行适配
适用性:
1. 系统需要使用现有的类,而此类的接口不符合系统的需要。
2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。
3. (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。
Adapter(别名Wrapper)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。
要点:
1. 适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。
2. 适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。
类的适配器模式结构图(继承):
对象的适配器模式结构图(组合):
对象适配器的代码实现:
Target:定义Client使用的与特定领域相关的接口
public interface Target { void request();}
Adaptee:现在需要适配的已经存在的接口
public class Adaptee{ public void specificRequest(){}}
Adapter:对Adaptee 的接口与Target接口进行适配
public class Adapter implements Target{ public Adapter(Adaptee adaptee) { super(); this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } private Adaptee adaptee;}
适用性:
1. 系统需要使用现有的类,而此类的接口不符合系统的需要。
2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。
3. (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。
效果及优缺点:
对于类适配器:
1. 用一个具体的Adapter类对Adaptee和Taget进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。
2. 使得Adapter可以override(重定义) Adaptee的部分行为,因为Adapter是Adaptee的一个子类。
对于对象适配器:
1. 允许一个Adapter与多个Adaptee,即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。
2. 使得override(重定义)Adaptee的行为比较困难。如果一定要override Adaptee的方法,就只好先做一个Adaptee的子类以override Adaptee的方法,然后再把这个子类当作真正的Adaptee源进行适配。
转自:http://www.cnblogs.com/god_bless_you/archive/2010/06/11/1756019.html
0 0
- Android设计模式之适配器模式
- android设计模式之适配器模式
- Android 设计模式之适配器模式
- Android 设计模式之适配器模式
- Android 设计模式之适配器模式
- android 设计模式之适配器模式
- Android 设计模式之适配器模式
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- 设计模式 之 适配器
- 设计模式 之 适配器
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- startKIT 八核开发板 xmos最新低成本多核实时IO解决方案
- SQL limit关键字
- UML中的用例图、活动图、顺序图
- RPM 安装与卸载
- 用lingo求状态转移矩阵的稳态概率分布
- android设计模式之适配器模式
- MATLAB基本语法
- iOS开发 -- KeyChain使用与共享数据
- ios随机数
- u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动 .
- poj 1502 MPI Maelstrom(单源最短路dijkstra)
- 良好的JavaScript书写习惯
- 如何全面欣赏一场时装秀?
- cocos2d opengl- Shader