设计模式-golang

69 阅读2分钟

一、创建型模式

1 简单工厂

  1. 定义
    通过在,简单工厂的new函数中,根据传入的参数或条件,返回不同类型的对象实例。
    这样的话,调用者就不需要,知道对象的具体创建过程,就可以得到对象实例。
  2. 优点
    • 隐藏对象的创建逻辑
    • 解耦对象的创建和使用
    • 灵活性高:如果需要新增一种产品,只需要修改简单工厂类,不需要修改使用的函数
  3. 缺点
    • 扩展性差:所有产品的创建都在一个工厂中,当需要添加新产品,或者删除产品,需要修改工厂的代码,违反了开闭原则
    • 违背单一职责原则:简单工厂类负责对象的创建的时候,需要包含了一些业务逻辑,导致类的职责不够单一。
    • 工厂类的职责过重:随着产品类型的增多,工厂类的代码会越来越臃肿,不利于代码的维护和扩展。
  4. 适用场景
    • 对象的创建逻辑相对简单,不涉及复杂的业务处理。
    • 需要创建的对象比较少(仅创建几个类问题不大,如果数量扩展到数百个,意味着写一堆if else,代码臃肿。)
  5. 示例
    1. 实现:实现主要分为三部分:
      • 1.构造函数:根据传入的参数,返回,所选择类型的指针(返回工厂的不同类型的产品)(在这个示例中是食物工厂,返回结果是各种类型的食物)
      • 2.定义一个方法接口(工厂生产的产品,的相同特性)(在这个示例中,产物是食物,共性就是都能被吃,不管生产出什么产品,都是被用来吃的)(这也是使用简单工厂的原因,它们都有相同的特性)
      • 3.实际的每个产品,和它们的实现。(工厂的不同类型的产品的具体实现,需要包括共同方法的实现)(在这个示例中,一共有三种食物,苹果apple,香蕉banana,猪肉pork)

2 工厂方法模式

简单工厂是工厂方法的一种特殊情况。

简单工厂和工厂方法的区别