外观模式(Facade Pattern)是一种结构型设计模式,它为复杂系统提供一个简化的接口,从而隐藏系统的复杂性,这个简化的接口就成为了更方便的访问点。外观模式定义了一个高层接口,使得客户端可以通过这个接口与系统交互,而不需要了解系统内部的具体实现。关键角色外观(Facade): 提供了一个简化接口,它是客户端与系统交互的入口点。外观将客户端的请求委派给系统中相应的子系统。子系统(Subsystem): 实现了系统的具体功能,被外观所调用。子系统可以是一个或多个类的集合,负责处理外观传递过来的请求。使用场景外观模式其实就是一个中间人,隔绝了客户端和子系统。当子系统很复杂时,客户端不需要了解子系统,只需和外观交互类图示例代码#include <iostream> // 子系统A class SubsystemA { public: void operationA() const { std::cout << "Subsystem A operation." << std::endl; } };
装饰模式(Decorator Pattern)是一种结构型设计模式。它能在不改变原有对象的结构的基础上,添加新的行为或责任。装饰模式以对象组合的方式实现这一功能,而不是通过继承。角色:组件(Component): 定义一个抽象接口,是被装饰对象和装饰对象的共同接口。具体组件(Concrete Component): 实现组件的具体功能,是被装饰的对象。装饰器(Decorator): 持有一个指向组件的引用,并实现组件的抽象接口。装饰器可以附加额外的责任。具体装饰器(Concrete Decorator): 实现装饰器接口,具体定义要添加到组件的新功能。可以有多个具体装饰器,它们可以以灵活的方式组合使用。类图代码示例#include <iostream> // 组件接口 class Component { public: virtual void operation() const = 0; }; // 具体组件 class ConcreteComponent : public Component { public: void operation() co
组合模式(Composite Pattern)是一种结构型设计模式,其将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端可以统一对待单个对象和组合对象,从而支持对整个树形结构进行统一的处理。角色组件(Component): 定义组合中所有对象的通用接口,声明了用于管理子组件的方法。叶子节点(Leaf): 是组合中的叶子对象,它没有子组件,实现了组件的通用接口。复合节点(Composite): 是组合中的复合对象,它可以包含叶子节点和其他复合节点,实现了组件的通用接口,并提供了管理子组件的方法。客户端通过统一的接口操作组合对象,不需要区分叶子节点和复合节点。这种统一的接口使得客户端可以递归地处理整个树形结构,而无需关心具体是叶子节点还是复合节点。场景应用模型能够表示成树形结构类图代码#include <iostream> #include <vector> // 组件接口 class Component { public: virtual void operation() const = 0; }; // 叶子节点 class Le
桥接模式(Bridge Pattern)是一种结构型设计模式。它将杂糅在一起的类拆分为抽象和实现两个独立的层次结构。这两个层次独立变化,互不影响。角色抽象部分(Abstraction): 定义抽象部分的接口,维护一个指向实现部分的引用。扩展抽象部分(Refined Abstraction): 继承自抽象部分,对抽象部分进行扩展,可以增加新的方法或属性。实现部分(Implementor): 定义实现部分的接口,被抽象部分调用。具体实现部分(Concrete Implementor): 实现实现部分的接口,提供具体的功能。适用场景当抽象化和实现化需要独立变化时。当需要在多个维度上扩展系统时。类图代码#include <iostream> // 实现部分接口 class Implementor { public: virtual void operationImpl() const = 0; }; // 具体实现部分A class ConcreteImplementorA : public Implementor { public: void operatio
适配器模式(Adapter Pattern)是一种结构型设计模式,它将一个类的接口转换成客户端所期望的另一个接口。适配器模式使得原本由于接口不匹配而无法一起工作的类能够协同工作。组成部分目标接口(Target Interface): 客户端期望的接口,适配器模式通过适配器将被适配者的接口转换为目标接口。适配器(Adapter): 实现了目标接口,并包装了一个被适配者对象。适配器通过调用被适配者的方法来实现目标接口。被适配者(Adaptee): 需要被适配的接口。适配器通过包装被适配者对象,使其能够与目标接口兼容。应用场景将遗留代码的接口与新的接口进行适配将两个不兼容的接口的类进行适配。将一个类的接口转换成另一个类的接口。实现方式类适配器模式: 适配器继承自被适配者,同时实现目标接口。通过继承,适配器可以重定义被适配者的方法,同时实现目标接口。对象适配器模式: 适配器包含一个被适配者的对象实例,并实现目标接口。通过组合,适配器将目标接口的调用委托给被适配者对象。类图类适配器模式对象适配器模式代码类适配器模式#include <iostream> // 目标接口 class