创建型-简单工厂模式

概念

Simple Factory Pattern:专门定义一个工厂类负责管理创建其他类的实例。根据创建方法的参数返回不同类的实例,被创建的实例通常具有共同的父类。

img

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 可乐抽象类
class Cola {
//
}
// 可口可乐产品类
class CocaCola extends Cola {
product (type) {
return `生产可口可乐`
}
}
// 百世可乐产品类
class PesiCola extends Cola {
product (type) {
return `生产百世可乐`
}
}

// 简单工厂实现
class SimpleFactory {
createColaWithType(type) {
switch (type) {
case 0:
return new CocaCola();
case 1:
return new PesiCola();
default:
break;
}
}
}

// 生产可口可乐
let cocaCola = new SimpleFactory().createColaWithType(0);
// 生产百世可乐
let pesiCola = new SimpleFactory().createColaWithType(1);

优点

  • 使用者只需要给工厂类传入一个约定好的参数,就能获取到想要的对象,不需要知道其创建的细节,一定程度上减少系统的耦合
  • 客户端只需要知道具体产品类对应的参数即可,减少开发者的记忆成本

缺点

  • 如果业务上需要添加新产品,需要修改工厂类原有的判断逻辑,违背开闭原则
  • 产品类型较多的情况下,有可能造成工厂逻辑过于复杂,简单工厂类型适合产品种类少且增加的概率低的情况