js设计模式--创建型--工厂模式

     创建型: 工厂模式(简单工厂)

  工厂模式: 就是将创建对象的过程单独封装。有构造函数的地方,就应该想到工厂模式。

    优点:

  1. 创建一个对象只需要知道它得名称即可
  2. 扩展性高,新增一个产品只要扩展一个工厂类
  3. 屏蔽内部具体实现,只关心产品对应接口

    缺点:

  1. 每增加一个产品,都要郑家一个具体得对象类工厂,系统类成倍增加,增加系统复杂度。
 1 // js 工厂模式
 2 function User(name, age, career, work) {
 3   this.name = name;
 4   this.age = age;
 5   this.career = career;
 6   this.work = work;
 7 }
 8 function Factory(name, age, career) {
 9   let work;
10   switch (career) {
11     case "coder":
12       work = ["写代码", "写bug"];
13       break;
14     case "product manager":
15       work = ["开会", "写ppt"];
16       break;
17     case "boss":
18       work = ["喝茶", "看报"];
19       break;
20   }
21   return new User(name, age, career, work);
22 }
23 //其实还可以换一种方式
24 function User(name, age, career) {
25   this.name = name;
26   this.age = age;
27   this.career = career;
28   switch (career) {
29     case "coder":
30       this.work = ["写代码", "写系分", "修Bug"];
31       break;
32     case "product manager":
33       this.work = ["订会议室", "写PRD", "催更"];
34       break;
35     case "boss":
36       this.work = ["喝茶", "看报", "见客户"];
37       break;
38   }
39 }

  这两种方式都可以实现,但是语义不同:

  构造函数 Factory 的职责是判断角色并且添加职责分配,然后调用 User,User只是创建对象,保持 ‘封闭 ’原则。

  Factory 可以随时修改,保持 ‘开放’原则。

原文地址:https://www.cnblogs.com/Sabo-dudu/p/14637418.html