# Design pattern **Repository Path**: z9527567/design-pattern-cpp ## Basic Information - **Project Name**: Design pattern - **Description**: No description available - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-19 - **Last Updated**: 2025-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 创建型 ## 1. 工厂方法 工厂方法模式 是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定具体实例化哪个类。简单来说,工厂方法将对象的创建过程延迟到子类中。函数调用 ## 2. 抽象工厂 抽象工厂模式 是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或依赖对象的家族,而无需指定它们的具体类。与工厂方法模式不同,抽象工厂模式关注的是创建一组对象,而不仅仅是单个对象。 --- ## 工厂方法与抽象工厂之间的区别 1. 核心目标 工厂方法模式: 定义一个创建对象的接口,但由子类决定具体实例化哪个类。 关注的是 单个对象的创建。 抽象工厂模式: 提供一个接口,用于创建 一组相关或依赖的对象家族。 关注的是 多个对象的创建,这些对象通常属于同一产品族。 2. 适用场景 工厂方法模式: 适用于需要创建单一对象,但具体类型可能变化的场景。 例如:一个披萨店可以制作多种披萨(芝士披萨、素食披萨等),但每次只制作一种披萨。 抽象工厂模式: 适用于需要创建一组相关对象的场景。 例如:一个跨平台的 UI 库需要创建一组相关的组件(按钮、文本框、下拉菜单等),而这些组件在不同操作系统(Windows、Mac、Linux)下的实现不同。 3. 实现方式 工厂方法模式: 定义一个抽象方法(工厂方法),由子类实现具体的对象创建逻辑。 通常只有一个工厂方法。 抽象工厂模式: 定义一个接口,包含多个工厂方法,每个方法用于创建一种类型的对象。 具体工厂类实现这些方法,创建一组相关的对象。 # 生成器 生成器模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象。生成器模式的核心思想是将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 生成器模式的核心思想 复杂对象的构建: 当一个对象的构建过程非常复杂(例如需要多个步骤或参数)时,生成器模式可以将构建过程分解为多个步骤。 分离构建与表示: 生成器模式将对象的构建过程(如何构建)与对象的表示(最终结果)分离,使得同样的构建过程可以创建不同的表示。 灵活性: 通过生成器模式,可以灵活地调整对象的构建过程,而不需要修改客户端代码。 # 原型 原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过构造函数创建。原型模式的核心思想是通过克隆(复制)来创建对象,从而避免直接调用构造函数带来的复杂性或性能开销。 原型模式的核心思想 克隆代替构造: 当创建一个对象的成本较高(例如需要复杂的初始化过程或资源消耗)时,可以通过复制现有对象来创建新对象,而不是从头开始构造。 灵活性: 原型模式允许在运行时动态创建对象,而不需要依赖具体的类。 减少重复初始化: 如果对象的初始化过程非常复杂或耗时,可以通过克隆来避免重复初始化。 原型模式的结构 原型模式通常包含以下角色: 原型接口(Prototype): 定义一个克隆自身的接口。 具体原型类(Concrete Prototype): 实现原型接口,提供克隆自身的具体实现。 客户端(Client): 通过调用原型对象的克隆方法来创建新对象。 例子:**克隆游戏角色** 假设我们正在开发一个游戏,游戏中有多种角色(例如战士、法师等)。每个角色的创建过程非常复杂(例如需要加载资源、初始化属性等)。我们可以使用原型模式来克隆现有角色,而不是从头开始创建。 # 单例 例如日志类。 # 适配器 适配器模式(Adapter Pattern)是一种结构型设计模式,用于使不兼容的接口能够协同工作。它通过将一个类的接口转换成客户端期望的另一个接口,解决接口不匹配的问题。 核心思想 适配器模式的核心是创建一个适配器类,充当两个不兼容接口之间的桥梁。适配器类实现目标接口,并持有被适配者的实例,通过调用被适配者的方法来实现目标接口的功能。 适用场景 接口不兼容:需要使用现有类,但其接口不符合需求。 复用旧代码:在不修改旧代码的情况下,使其与新系统兼容。 统一接口:需要统一多个类的接口以便客户端调用。 主要角色 目标接口(Target):客户端期望的接口。 被适配者(Adaptee):需要被适配的现有类。 适配器(Adapter):实现目标接口,并持有被适配者的实例,负责接口转换。 类型 类适配器:通过多重继承实现,适配器类继承被适配者并实现目标接口。 对象适配器:通过组合实现,适配器类持有被适配者的实例并实现目标接口。 # 桥梁 # 组合 # 装饰 # 外观 # 享元 # 代理 # 责任链 # 命令 # 迭代器 # 中介者 # 备忘录 # 观察者 # 状态 # 策略 # 模版方法 # 访问者 # MVC模式