知食记
搜索文档…
工厂模式

定义

定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。
工厂方法让类的实例化推迟到子类中进行。

场景

优点

隐藏原始类,方便之后的代码迁移

缺点

多了层封装,会造成类的数目过多,系统复杂度增加。

JavaScript实现

1
/**
2
* 实体类:Dog、Cat
3
*/
4
5
class Dog {
6
run() {
7
console.log("狗");
8
}
9
}
10
11
class Cat {
12
run() {
13
console.log("猫");
14
}
15
}
16
17
/**
18
* 工厂类:Animal
19
*/
20
21
class Animal {
22
constructor(name) {
23
name = name.toLocaleLowerCase();
24
switch (name) {
25
case "dog":
26
return new Dog();
27
case "cat":
28
return new Cat();
29
default:
30
throw TypeError("class name wrong");
31
}
32
}
33
}
34
35
/**
36
* 以下是测试代码
37
*/
38
39
const cat = new Animal("cat");
40
cat.run();
41
const dog = new Animal("dog");
42
dog.run();
Copied!
最近更新 2yr ago