知食记
搜索文档…
知食记
思维导图
归档
博客
🎃CSS
CSS基础
CSS3
SCSS
🎉JavaScript
JS 概念
JS陷阱
JS开发知识点
实现JS常见函数
实现JS 常见操作函数
JS Worker
ES6
ES6 函数
Typescript
V8
🕹️框架
Vue
Vue3
React
React-Redux
React Hooks
Nuxt
Koa2
🎯算法
算法与数据结构
🎁HTML
DOM
SVG
🏈计算机网络
浏览器
计算机网络
🥊前端生态
Webpack
Babel
Fetch
Axios
Npm
Yarn
业务开发
微前端
Hexo
🏀后端
Node
Java
Python
🕹️面试
面试真经
To-do
🤖开源
开源项目
🧸其他
Linux
Git
正则
设计模式
简单工厂模式
抽象工厂模式
单例模式
装饰器模式
适配器模式
代理模式
观察者模式
发布-订阅模式
观察者模式与发布-订阅模式的区别是什么?
单例模式
工厂模式
享元模式
计算机理论
Group 1
由
GitBook
提供支持
工厂模式
定义
定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。
工厂方法让类的实例化推迟到子类中进行。
场景
优点
隐藏原始类,方便之后的代码迁移
缺点
多了层封装,会造成类的数目过多,系统复杂度增加。
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
复制链接
内容
定义
场景
优点
缺点
JavaScript实现