# 工厂模式
最常用的设计模式之一, 在工厂模式中, 我们在创建对象时不会对客户端暴露创建逻辑, 并且是通过使用一个共同的接口来指向新创建的对象。
# UML 类图
# 传统的 Java 类图
# JavaScript 类图
# 作用
定义一个创建对象的接口, 让其子类自己决定实例化哪一个工厂类, 工厂模式使其创建过程延迟到子类进行。
# 优缺点
# 优点
解耦
扩展性高
降低代码重复
屏蔽产品的具体实现, 调用者只关心产品的接口
# 缺点
增加产品, 需要修改工厂类, 不符合开放-封闭原则
工厂类集中了所有实例的创建逻辑, 违反了高内聚责任分配原则
# 场景
React.createElement
Vue 异步组件
# 实现代码
/*
* @Author: Rainy
* @Date: 2019-11-14 19:25:01
* @LastEditors : Rainy
* @LastEditTime : 2019-12-22 17:29:47
*/
class Creator {
create(name: string): Product {
return new Product(name);
}
}
class Product {
name: string;
constructor(name: string) {
this.name = name;
}
init(): void {}
fn1(): void {}
fn2(): void {}
}
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
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