1. 何为适配器模式
适配器的思想来源于生活中的电源适配器(如手机的充电器),电源适配器是为了解决各个国家电压频率不一致的问题。
软件开发中适配器分为 类适配器 和 对象适配器。
对象适配器:苹果手机无论在美国、日本还是中国都可以用同一个充电器解决电源适配的问题, 这种充电器就叫对象适配器。对象适配器只有一个,抽象成软件开发中的类的话,它就只有一个对象适配器类,它只在一个类里边写了很多很多方法来适配不同的对象,结果都是一样的。
类适配器:诺基亚手机在美国需要买一个充电器,在日本需要买一个充电器,在中国需要买另一个充电器去解决电源适配问题,这种充电器就叫类适配器。 它为了适配某种情况,需要单独初始化出一个子类出来单独适配各种情况。
2. iOS中的那些适配器
一个适配器允许接口不兼容的类在一起工作,它把它自己包裹成一个对象看,公开一个与这个对象相互作用的标准接口。
苹果使用适配器时使用了协议(protocols),像UITableViewDelegate, UIScrollViewDelegate, NSCoding 和 NSCopying 这样的协议。例子,NSCopying 的协议 (protocol),任何类都可以提供这样一个标准的复制方法。
3. 如何使用适配器模式
3.1 创建抽象适配器对象
要给你的手机充电,首先必须要有一个万能的充电器。
3.2 适配器与视图层建立输出关系
就像电源输出的电压稳定在5.2伏、0.3安。
3.3 适配器与数据层建立输入的联系
充电的电压不同,但是结果都是一样的。
3.4 类适配器与对象适配器
- 对象适配器模式
在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 - 类适配器模式
这种适配器模式下,适配器继承自已实现的类(一般多重继承)。
4. 适配器模式的优缺点
4.1 优点
它可以降低视图层与数据层之间的耦合度,它的存在是为了降低耦合度,使你的类不经过修改就可以适配更多的情景。
4.2 缺点
可读性不是很好,代码多。
5. 小结
适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用,另外,OC中也不支持多重继承。对象适配器采用“对象组合”的方式,更符合松耦合规范。
在以下各种情况下可以考虑使用适配器模式:
(1)需要使用一个已经存在的类,而它的接口不符合新环境的规范。
(2)想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
参考:
http://www.cnblogs.com/eagle927183/p/3482061.html
http://www.open-open.com/lib/view/open1481702812024.html