结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
1.代理模式(委托模式)
为其他对象提供一种代理以控制对这个对象的访问。
场景:控制访问,添加额外行为等。
2.组合模式
将一组相似地对象看做一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法区访问相应的对象,以此忽略掉对象与对象结合之间的差别。
如文件系统DIR与File的组合,控件系统View与ViewGroup的组合。
3.适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。
类适配器,继承,Adapter类出现一些奇怪接口,用户成本高。
对象适配器,代理,推荐方式。
如ListView的Adapter,用来适配各种ItemView。
4.装饰模式
动态地给一个对象添加一些额外的职责,继承关系的一种替代方案。
装饰模式是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;为所装饰的对象增强功能;
代理模式则是给一个对象提供一个代理对象,并由代理对象来控制对原有对象的引用;对代理的对象施加控制,不对对象本身的功能进行增强。
5.享元模式
缓存可共享对象,提升性能。
内部状态(可共享),外部状态(不可共享)。
如买火车票查询,A到B是Ticket内部状态,不同车票类型是外部状态。
6.外观模式---SDK开发
通过一个外观类统一对外接口,外观类引用子系统,从而对外提供交互能力。
如网络框架里对各个子系统的封装。
7.桥接模式
将可以独立变化的两个部分分离。
比如大中小杯的咖啡和不同的佐料,只需要抽象咖啡类持有对抽象佐料类的引用即可。