• 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 可以随时修改,保持 ‘开放’原则。

  • 相关阅读:
    关于loose.dtd和xhtml1transitional.dtd等文档类型定义模型中CSS失效的解决办法。
    JSON扫盲帖+JSON类教程
    jQuery中Ajax事件
    JQuery绑定事件 时如何传递参数
    xml include 另外一个xml文件
    ubuntu 两张网卡时网络设置
    Letcode 题:pow(x,n)
    Java编程语言中sleep()和yield()的区别
    JProfiler与eclipse集成
    zz 字符串相关
  • 原文地址:https://www.cnblogs.com/Sabo-dudu/p/14637418.html
Copyright © 2020-2023  润新知