工厂模式简单工厂

181 阅读2分钟

场景设计一个员工录入系统,你怎么设计

如果只有你一个人,那就很简单,特别容易就能实现

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)
}
以后在需要的话只需要无脑传参就可以了是不是很方便

所谓工厂模式就是我不用关心过程是什么,就好像你去饭馆点菜,你传参的过程就是你点菜的过程,其他的你就不用管啦,交给厨师(工厂来做就好了),所以工厂模式其实就是为了爽,只需要无脑传递参数就可以了。