设计模式

七大原则

Posted by MagicianJoker on May 10, 2021

设计模式分为三大类

创建型

工厂模式

简单工厂

  • 只有唯一工厂(简单工厂),一个产品接口/抽象类,根据简单工厂中的静态方法来创建具体产品对象。适用于产品较少,几乎不扩展的情景
  • 优点:简单工厂可以使客户端免除直接创建对象的职责,能够根据需要创建出对应的产品。实现客户端和产品类代码分离。
  • 缺点:违背开闭原则,如果需要新增其他产品类,就必须在工厂类中新增if-else逻辑判断。但是整体来说,系统扩展还是相对其他工厂模式要困难。

image-20250618145906575

工厂方法

  • 工厂方法模式实际上是简单工厂模式的升级,工厂方法模式定义除了产品接口外,还定义了一个用于创建对象工厂的接口,让工厂子类再去实例化对应的产品类。它有多个工厂(抽象工厂+多个具体工厂),一个产品接口/抽象类,根据继承抽象工厂中的方法来多态创建具体产品对象。适用于一个类型的多个产品
  • 优点:完全实现开闭原则,实现了可扩展和更复杂的层次结构。明确了职责,具有多态性,适用于任何实体类。
  • 缺点:如果业务增加,会使得系统中类的个数成倍增加,提高了代码的复杂度

image-20250618145853823

抽象工厂

  • 有多个工厂(抽象工厂+多个具体工厂),多个产品接口/抽象类,对产品子类进行分组,根据继承抽象工厂中的方法多态创建同组的不同具体产品对象。适用于多个类型的多个产品

  • 优点:增加分组比较容易,而且能大大减少工厂类的数量

  • 缺点:因为分组,所以分组中的产品扩展就比较困难,比如再新增一个Product3,就需要改动AbstractFactoryFactoryAFactoryB几乎所有工厂类

image-20250618150735426

单例模式

  • 保证一个类仅有一个实例,并提供一个访问它的全局访问点

建造者模式

原型模式

  • 浅拷贝
  • 深拷贝 序列化和反序列化 MemoryStream和BinaryFormatter

结构型

行为型