GoF 结构模式

另请参见

GoF (Gang of Four) 结构模式是将类和对象组成更大结构的一种处理方式。结构类模式使用继承来构成接口或实现。例如,多重继承表示单个类可以是多个父类的混合。利用多重继承可使独立开发的类库能够更方便地进行协同工作。

下表描述了各种 GoF 结构模式:

模式名称 处理的设计问题 角色 描述
适配器 将类接口转换为客户端要求的接口。Adapter 可以消除不兼容的接口,从而使那些在其他环境下不能协同工作的类能够协同工作。 目标 定义客户端使特定请求抽象化时使用的操作集合。
客户端 处理 Target 对象。
Adaptee 提供可用于特定请求的特定适配。
适配器 提供特定目标请求与特定 Adaptee(实际处理该请求)之间的“粘合剂”。
Bridge 提供一种抽象机制,允许某一特定行为的特定实现发生变化。 抽象 定义由 RefinedAbstraction 实现的抽象接口。
RefinedAbstraction 实现在 Abstraction 接口中声明的操作。
Implementor 定义由 ConcreteImplementor 实现的抽象接口。Abstraction 将使用此 Implementor。
ConcreteImplementor 实现在 Implementor 接口中声明的操作。
组合 Composite 允许客户端以统一方式来处理可能包含其他对象的对象。 组件 定义要参与到组合中所有对象都必须实现的基本接口。
Leaf 一个对象,其中不包含与组合相关的其他对象。
组合 一个对象,其中包含符合 Component 接口标准的其他对象。
客户端 处理 Component 对象。
Decorator 动态地向某一对象附加额外的职责。Decorator 模式通过为子类派生提供灵活的替代方法来扩展功能。 组件 定义所有希望动态修饰的对象必须实现的抽象接口。
ConcreteComponent 实现在 Component 接口中声明的操作。
Decorator 由 ConcreteDecorator 实现的抽象接口。
ConcreteDecorator 实现在 Decorator 接口中声明的操作。
Facade 提供进入潜在复杂子系统的较高级别入口点,从而可以更有效地为客户端管理子系统。 Facade 负责委托请求的对象。
Subsystem 实现 Facade 对象委托的特定请求。
Flyweight 使用共享来有效地支持大量的细粒对象。 Flyweight 定义一个抽象接口,客户端将使用该接口来处理无法在 ConcreteFlyweight 之间共享的状态。
ConcreteFlyweight 实现 Flyweight 接口,并为可以共享的状态提供一个存储位置。
UnsharedConcreteFlyweight 实现 Flyweight 接口,并为不能共享的状态提供一个存储位置。
FlyweightFactory 提供用来创建 ConcreteFlyweight 对象的操作。
客户端 处理各种 Flyweight 对象。
Proxy 为控制访问代理或占位符的另一个对象提供代理或占位符 Proxy 实现由 Subject 定义的接口,Subject 将所有通过该接口的请求传递给 RealSubject。
Subject 定义 RealSubject 和 Proxy 必须实现的操作集合。
另请参见
GoF 设计模式
GoF 行为模式
GoF 创建模式

法律声明