设计模式 ——接口适配

适配器

  1. 类适配器
    类适配器(adapter)是通过继承来适配两个接口;通过继承一个协议,和一个实际类(adaptee),通过重载中的协议方法,调用超类(adaptee)中的方法(specificRequest)发送【super specificRequest】方法;
    只有当是协议而不是类时,类适配器才能用OC来实现;
  2. 对象适配器
    对象适配器(adapter)继承一个协议,与类适配器不同的是adapter与被适配者(adpatee)之间不是继承关系,而是包含关系,adpter需要保持对adptee的引用,在协议中的Request方法中的实现,adpter通过【adaptee specificRequest】消息引用adaptee,以间接访问它的行为,然后实现客户端请求的其余部分;

适配器模式:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

使用场景:

  1. 与已有类的接口与需求不匹配;
  2. 想要一个可复用的类,该类能够同时带有不兼容接口的其他类协作;
  3. 需要适配一个类的几个不同子类,可是让每一个子类去子类化一个适配器又不现实,那么可是使用对象适配器(也叫委托)来适配父类的接口;

桥接

桥接模式:将抽象部分与它的实现部分分离,使他们可以独立地变化;

使用场景

  1. 不想在抽象和实现之间形成固定的绑定关系;
  2. 抽象和实现都应可以通过子类化独立的扩展;
  3. 对抽象的实现进行修改不应影响客户端的代码;
  4. 如果每个实现需要额外的子类一细化抽象,则说明有必要把它们分成两部分;
  5. 想在带有不同的抽象接口的多个对象之间共享一个实现;

外观

外观模式:为系统中飞一组接口提供一个统一的接口。外观定义一个高层接口,让子系统更易于使用;

使用场景

  1. 子系统正逐渐变复杂;
  2. 可以使用外观对子系统进行分层;

对象去耦

中介者

中介者模式:用一个对象来封装一系列对象的交互方式。中介者使各对象不需要显示地相互引用,从而使其耦合松散,并且可以独立地改变它们之间的交互。

使用场景

1.对象间的交互虽定义明确然而非常复杂,导致一组对象相互依赖而且难以理解;
2. 因为对象引用了许多其他对象并与其通讯,导致对象难以复用;
3. 想要定制一个分布在各个类中的逻辑行为,又不想生成太多子类;

观察者

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新;

使用场景

  1. 有两种抽象类型相互依赖,将他们封装在各自的对象中,就可以对他们单独进行改变和复用;
  2. 对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变;
  3. 一个对象必须通知其他对象,而他又不需要通知其它对象是什么;

你可能感兴趣的:(iOS)