C++设计模式笔记

参考:https://blog.csdn.net/liang19890820/article/details/66974516

创建型模式

创建型模式(Creational Patterns),用于构建对象,以便它们可以从实现系统中分离出来。

单例模式

单例模式(Singleton Pattern)是设计模式中最简单的形式之一,其目的是使得类的一个对象成为系统中的唯一实例。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。

两种实现方式:

  1. 将 GetInstance() 函数的返回类型修改为指针,而非引用
  2. 显式地声明类的拷贝构造函数,并重载赋值运算符。

饿汉式:非 Lazy 初始化,多线程安全
懒汉式:Lazy 初始化,非多线程安全

抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。

优点:

  • 封装了产品的创建,使得不需要知道具体是哪种产品,只需要知道是哪个工厂即可。
  • 可以支持不同类型的产品,使得模式灵活性更强。
  • 可以非常方便的使用一族中的不同类型的产品。

缺点

扫描二维码关注公众号,回复: 997499 查看本文章
  • 结构过于臃肿,如果产品类型较多或产品族较多,会非常难于管理。
  • 每次如果添加一组产品,那么所有的工厂类都必须添加一个方法,这样违背了开放-封闭原则。所以一般适用于产品组合产品族变化不大的情况。

建造者模式

建造者模式(Builder Pattern),旨在将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
优点:

  • 建造者独立,易于扩展
  • 便于控制细节风险

缺点:

  • 产品必须有共同点,范围有限制
  • 如果内部变化复杂,将会有很多的建造类

工厂方法模式

工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。
优点:

  • 克服了简单工厂模式违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点,降低客户端和工厂的耦合性。所以说,“工厂方法模式”是“简单工厂模式”的进一步抽象和推广。

缺点:

  • 每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。

猜你喜欢

转载自blog.csdn.net/xp731574722/article/details/80350001
今日推荐