结构性模式

1、适配器(Adapter)

将一个类接口转换成客户希望的另外一个接口。可以通过继承客户接口和适配层接口实现,也可通过组合方式。

继承的方式能够改写基类实现,但是无法适配子类的接口。组合的方式需要显示调用,没有默认实现。但是可以同时适配多个基类。

一般在设计后实施,已经存在了Target和Adaptee了

结构性模式_第1张图片


2、桥接模式(Bridge)

将抽象部分和实现部分分离,使得他们独立的变化。一般在设计前实施

结构性模式_第2张图片


3、组合(Composite)

适用性:你想表示对象的部分-整体层次接口

用户忽略组合对象和单个对象的不同。是一个递归的过程。

用户调用operator时,会一级一级调用各自的operator,对于用户来说,每个都是Component对象类型。Composite则又包含了Leaf对象或Composite对象。

结构性模式_第3张图片


4、装饰(Decorator)

动态的给一个对象添加额外的职责

classA* pTestA = new ClassA(new ClassB(new ClassC);

pTestA->operator();

此时会递归调用B的operator,在B的operator中科院加一些状态如AddState,再调用C的,C再加一些行为如AddBehavior。如此添加职责。

结构性模式_第4张图片


5、外观(Facade)

将各个子系统提供一个高层接口,方便客户类使用,各个子系统功能多而复杂。该外观类只负责对子系统接口的访问。子系统接口不能访问外观接口。


6、享元(flyweight)

通过享元技术可支持大量细粒度的对象

如word中,如果对每个字符都出一个对象实例(对象包含位置,颜色等属性),则对象数量庞大。解决方法

6.1 、a,b,c,d这些类型对象共享

6.2、颜色字体不会有太多组合,由布局器来维护管理

提取公有部分共享,不同部分使用单独类管理


7、代理(Proxy)

为其它对象提供一种代理,以控制对这个对象的访问。

适用性:因此对象接口。对象开销大,由代理延迟开销或决定是否开销。






你可能感兴趣的:(结构性模式)