13.3.12代理模式
代理模式为其他对象提供一个代理以控制对这个对象的访问。
当无法或不想直接访问某个对象或访问某个对象粗耨困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
iOS在不同界面间的传值、Android的Binder和Notification机制都使用了代理模式。
13.3.13组合模式
组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
此模式的使用场景:
(1)表示对象的部分-整体层次结构时。
(2)从一个整体中能够独立出部分模块或功能时。
如文件系统,View和ViewGroup系统就使用了组合模式。
13.3.14适配器模式
适配器模式将一个类的接口转换成客户希望的另外一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。也可以像Listview那样,利用此模式隔离变化,使得UI架构变得更灵活。
此模式的使用场景:
(1)系统需要使用现有的类,而类的接口不符合系统的需要,即接口不兼容。。
(2)想要建议一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
(3)需要一个统一的输出接口,而输入端的类型不可预知。
如在APP中为了实现某个功能,需要集成三方库或SDK,而这些三方库或SDK可能会采用不同的厂商的,为了替换方便,需要使用适配