随笔分类 - 6、设计模式
摘要:外观模式:为一个复杂的子系统提供一个统一的接口,简化客户端的使用 场景:电脑启动系统 我们模拟一台电脑,它内部有很多复杂组件: - CPU - 内存(Memory) - 硬盘(HardDrive) - BIOS(固件) - 启动过程很复杂,但用户只需要调用 computer.turnOn() 就行了
阅读全文
摘要:建造者模式核心思想,将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示 业务场景:复杂对象构建 —— Web服务器配置生成器 你需要创建一个 WebServerConfig 对象,它包含多个可选配置项: - 监听端口 - 根目录 - 是否启用 HTTPS - SSL 证书路径
阅读全文
摘要:模板方法模式(Template Method Pattern) 是一种 行为型设计模式 核心思想: - 在父类中定义一个算法的骨架(模板),而将一些步骤的实现延迟到子类中。 - 父类控制算法结构,子类可以重新定义某些步骤,但不能改变算法的整体流程。 特点: - 算法骨架固定,由父类的 templat
阅读全文
摘要:代理模式(Proxy Pattern) 是一种结构型设计模式,它为某个对象提供一个代理(替身) 来控制对该对象的访问。 核心思想:用代理控制对真实对象的访问 角色说明: - Subject:定义接口,真实对象和代理都实现同一接口 - RealSubject:真实对象,执行实际工作 - Proxy:代
阅读全文
摘要:装饰器模式(Decorator Pattern) 是一种结构型设计模式,它允许你动态地给一个对象添加额外的功能或行为,而无需修改其原始类。它通过将对象包装在“装饰器”类中来实现功能的扩展,比继承更灵活。 核心思想 - 动态扩展功能,在运行时添加或移除功能,比静态继承更灵活。 - 避免类爆炸,如果用继
阅读全文
摘要:观察者模式(Observer Pattern) 是一种行为型设计模式,它定义了对象之间 “一对多” 的依赖关系,使得当一个对象(称为 主题 / 被观察者)的状态发生变化时,所有依赖于它的对象(称为 观察者)都会自动收到通知并进行更新。 实现原理 1. 抽象基类 + 多态 - 使用纯虚函数定义接口(S
阅读全文
摘要:适配器模式的核心思想,将一个类的接口转换成客户期望的另一个接口,让原本不兼容的类可以一起工作。 - 解决 “已有类,但接口不匹配” 的问题 - 继承多个接口实现 - 常用于集成老系统、第三方库、跨平台开发 // 目标接口(客户端期望的接口) class USBCharger { public: vi
阅读全文
摘要:策略模式的核心思想,定义一系列算法或行为,把它们封装起来,并且使它们可以互相替换。 - 客户端可以在运行时动态切换策略 - 避免 if-else 或 switch 判断不同算法 - 提高扩展性和可维护性 设计思想 - 定义一个策略接口 - 每种算法实现一个具体策略类 - 上下文类持有策略,通过多态调
阅读全文
摘要:抽象工厂模式(Abstract Factory Pattern)的核心在于创建一系列相关或依赖的对象,而无需指定它们的具体类。它适用于需要保证对象族一致性的场景。 抽象工厂最适合的场景是:“一键切换”一整套相互关联的对象,比如: - 换操作系统主题 - 换游戏皮肤 - 换数据库 - 换文档格式 -
阅读全文
摘要:最简单的工厂方法模式(Factory Method Pattern) 的实现,代码简洁、结构清晰,只保留核心要素,便于理解。 核心思想 - 定义一个创建对象的接口,但让子类决定实例化哪个类。 - 父类负责定义流程,子类负责具体对象的创建。 // 创建者基类(定义工厂方法) class Creator
阅读全文
摘要:简单工厂是创建型设计模式的核心之一,它通过一个工厂类来封装对象的创建过程,使得客户端代码无需关心具体类的实例化细节,从而实现解耦。 工厂模式有三种主要形式: - 简单工厂 (Simple Factory) - 工厂方法 (Factory Method) - 抽象工厂 (Abstract Factor
阅读全文
摘要:单例模式是最常用的设计模式之一,属于创建型设计模式,它的核心目标是:确保一个类在整个程序生命周期中只有一个实例,并提供一个全局访问点。 核心意图 - 控制实例数量:防止一个类被多次实例化。 - 提供全局访问:让任何地方都能方便地访问这个唯一的实例。 - 节省资源:对于重量级对象(如数据库连接、配置管
阅读全文
浙公网安备 33010602011771号