zoukankan      html  css  js  c++  java
  • 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 可以随时修改,保持 ‘开放’原则。

  • 相关阅读:
    SSIS Error:Package Validation Error. SSIS Error Code DTS_E_OLEDBERROR. .Error code: 0x80040E37. An OLE DB record is available. Hresult: 0x80040E37
    MDS
    oracle11g rac静默安装+racADG部署搭建
    oracle 19c 单机ADG部署
    对索引组织表以及簇表的一些理解
    对表的连接的总结
    全局临时表
    对分区表的一些总结
    对临时表空间的一些常用查询
    linux 常用命令总结
  • 原文地址:https://www.cnblogs.com/Sabo-dudu/p/14637418.html
Copyright © 2011-2022 走看看