场景设计一个员工录入系统,你怎么设计
如果只有你一个人,那就很简单,特别容易就能实现
const xiaobo = {
name:'xiaobo',
age:24,
carcer:'coder'
}
如果那天我跑来了一个小女生说干嘛呢,你说设计系统呢,女孩说好牛逼的样子,要不你把我也添加进去??你不得装一把么于是乎你写下
const xiaofang = {
name:'小芳',
age:23,
carcer:'人事'
}
女孩开心的走了,但是此时你陷入沉思,如果要有1000个人,岂不是要累死老夫??经过一番思考
function User(name,age,carcer){
this.name = name
this.age = age
this.carcer = carcer
}
然后去数据库中取到1000条数据
const user = new User(name,age,carcer)
直接渲染就好了
那么问题来了此时这个User是什么函数,为什么之前必须手动创建的员工现在不需要了呢,他是怎么变成自动化的呢,这里面就要思考一个问题,什么变了,什么又没变呢,变的是每个人的属性值,而不变的是每个人的属性名
终于写好了之后拿给老板看,老板说不行啊,你这得体现每个人的工作内容啊,比如程序员跟人事,他们的工作是不一样的,于是乎陷入了思考。终于
function User(name , age, career, work) {
this.name = name
this.age = age
this.career = career
this.work = work
}
function factory(name,age,caraer){
let work = null
switch(carcer){
case 'coder':
work = ['写代码','写系分', '修Bug']
break
case 'product manager':
work = ['订会议室', '写PRD', '催更']
break
case 'boss':
work = ['喝茶', '看报', '见客户']
case 'xxx':
// 其它工种的职责分配
...
}
return new User(name,age,carcer,work)
}
以后在需要的话只需要无脑传参就可以了是不是很方便
所谓工厂模式就是我不用关心过程是什么,就好像你去饭馆点菜,你传参的过程就是你点菜的过程,其他的你就不用管啦,交给厨师(工厂来做就好了),所以工厂模式其实就是为了爽,只需要无脑传递参数就可以了。