设计模式的核心就是观察整个逻辑中 变 和 不变 的部分,将其分离,保持变化的部分灵活,不变的部分稳定。
——修言
定义
工厂模式就是将简单的创建对象的过程进行单独封装,共性的部分直接创建,变化的部分根据不同的逻辑进行判断,从而创建对象。
实战
需求
一个信息录入系统,需要创建员工的名字,年龄,职业,工作内容。其中职业和工作内容挂钩,不同职业对应不同的工作内容。
分析
不变的部分为员工的名字name
、年龄age
、职业career
工作内容根据职业的不同进行划分,则需要改变的部分为工作work
实现
//创建构造器
const User = function (name, age, carreer, work) {
this.name = name;
this.age = age;
this.career = career;
this.work = work;
}
//创建工厂方法
const Factory = function (name, age, career) {
let work;
switch(career) {
case 'coder':
work = ['代码', '游戏', '睡觉'];
case 'pm':
work = ['催更', '讨论', '开会'];
case 'boss':
work = ['报纸', '咖啡', '数钱'];
}
return new User(name, age, career, work)
}