Objective-C 设计模式-适配器模式 (Adapter)

适配器模式定义

  适配器模式(Adapter),将一个类的结构转换成用户希望的另一个接口,使得原本接口不兼容的类能在一起工作。换句话说,适配器模式就是链接两种不同种类的对象,使其很好的协同工作。适配器模式有两种实现方式:

  1. 类适配器模式,只针对单一的具体Adaptee类,把Adpatee适配到Target。通过直接子类化Adpatee类进行适配,易于重载Adpatee行为。

  2. 对象适配器,可以是适配多个Adaptee类,需要包含Adaptee的引用,以间接访问Adaptee并适配其行为。

 

适配器模式使用场景

  1. 已有的类的接口和需求匹配
  2. 想定义一个可复用的类,该类可能有带不兼容接口的其他类协作。
  3. 需要适配一个类的几个不同子类,如果让每一个子类去子类化一个类适配器又不现实,那么可以使用对象适配器来适配其父类的接口。

 

适配器模式在ios中的应用

  在Cocoa Touch框架中,委托模式delegate应用相当广泛,委托模式可以认为它主要是适配器模式,它实现了适配器模式的意图,其中委托协议是一个Target目标接口,实现委托协议的对象就是Adapter,而程序中的其他类是Adaptee。下面是实现UITableView的结构图:

  

 

适配器模式的优缺点

优点

  1. 使得客户端类和Adaptee类之间解耦,灵活性和扩展性都非常好,符合开闭原则。
  2. 增加了类的透明性和复用性,将具体的实现封装在Adaptee类中,对于客户端类来说是透明的,而且提高了Adaptee的复用性。
  3. 类适配器是直接子类化适配的,使得易于重载Adaptee的行为,使Adapter的灵活性更强。
  4. 对象适配器可以适配多个Adaptee类。

缺点

  1. 对于Java、Objective-C等不支持多重继承的语言,类适配器只能针对单个Adaptee类,不能将多个Adaptee类适配到目标接口。
  2. 对象适配器难以重载Adaptee的行为,需要通过Adaptee的子类而不是Adaptee本身。

 

posted on 2013-06-12 16:36  Markhy  阅读(458)  评论(0编辑  收藏

导航