4-结构型模式
结构型模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。
- Adapter(4.1)模式:适配器使得一个接口(adaptee 的接口)与其他接口兼容,从而给出多个不同接口的统一抽象。
- Composite(4.3)模式是结构型对象模式的一个实例。它描述了如何构造一个类层次式结构,这一结构由两种类型的对象(基元对象和组合对象)所对应的类构成。
- 组合对象可以组合基元对象和组合对象
- Flyweight(4.6)模式为了共享对象定义了一个结构。
- 为何要求对象共享:效率和一致性。使用对象共享而不是进行对象复制,可以节省大量的空间资源。
- Flyweight 的对象共享机制主要强调对象的空间效率
- Proxy(4.7)模式中,proxy 对象作为其他对象的一个方便的替代或占位符。
- 它可以在局部空间中代表一个远程地址空间中的对象
- 可以表示一个要求被加载的较大的对象
0.1.1 Adapter、Facade 与 Bridge
Adapter 与 Bridge共同点:
- 都给另一对象提供了一定程度的间接性,因而有利于系统的灵活性
- 都涉及从自身以外的一个接口向这个对象转发请求。
Adapter 与 Bridge不同点:
- 用途:
- Adapter 模式主要是为了解决两个已有接口之间不匹配的问题。它不考虑这些接口是怎样实现的,也不考虑它们各自可能会如何演化
- Bridge 模式则对抽象接口与它的(可能是多个)实现部分进行桥接。虽然这一模式允许你修改实现它的类,但是它仍然为用户提供了一个稳定的接口。
- 阶段:
- Adapter 模式在类已经设计好后实施,其目的一般是避免代码重复。此处耦合不可预见。
- Bridge 模式在设计类之前实施:一个抽象将有多个实现部分,并且抽象和实现两者是独立演化的
facade 定义一个新的接口,而 Adapter 则复用一个原有的接口(适配器使两个已有的接口协同工作而非定义新的接口)
0.1.2 Composite、Decorator
Composite(4.3)模式和 Decorator(4.4)
- 相同点:仅限于都是递归组合
- 不同点:
- Decorator 用于添加功能而不产生新的子类
- Composite 用于构造类