设计模式的核心就是观察整个逻辑中 不变 的部分,将其分离,保持变化的部分灵活,不变的部分稳定。

——修言

定义

工厂模式就是将简单的创建对象的过程进行单独封装,共性的部分直接创建,变化的部分根据不同的逻辑进行判断,从而创建对象。

实战

需求

一个信息录入系统,需要创建员工的名字,年龄,职业,工作内容。其中职业和工作内容挂钩,不同职业对应不同的工作内容。

分析

不变的部分为员工的名字name、年龄age、职业career工作内容根据职业的不同进行划分,则需要改变的部分为工作work

实现

  1. //创建构造器
  2. const User = function (name, age, carreer, work) {
  3. this.name = name;
  4. this.age = age;
  5. this.career = career;
  6. this.work = work;
  7. }
  8. //创建工厂方法
  9. const Factory = function (name, age, career) {
  10. let work;
  11. switch(career) {
  12. case 'coder':
  13. work = ['代码', '游戏', '睡觉'];
  14. case 'pm':
  15. work = ['催更', '讨论', '开会'];
  16. case 'boss':
  17. work = ['报纸', '咖啡', '数钱'];
  18. }
  19. return new User(name, age, career, work)
  20. }