js设计模式-工厂模式

一句话总结:在构造函数外面增加一个函数,每次创建的时候,调用外层函数,不用去管构造函数的内部是如何实现的。

目录

生活中的栗子

去面馆吃面,给老板说: '来碗杂酱面',老板把面端上来。在这个过程中,我们不会去关心,面是怎么做出来的,是如何做的。给老板说: ’来碗杂酱面‘,就给你做杂酱面,来碗番茄面,就给你做番茄面。这就是一个工厂模式。

uml类图

代码实现

// 面馆
class NoodleShop {
  constructor(name) {
    // 省略n行代码 制作面条的步骤
    this.end(name);
  }
  // 烧水
  shaoShui() {}

  // 和面
  huomian() {

  }

  // 制作完成
  end(name) {
    console.log(`${name}制作完成`);
  }
}

function factory(name) {
  return new NoodleShop(name);
}

factory('番茄面'); 

在上面代码中,NoodleShop就是一个构造函数,factory就是工厂函数,每次需要’做面条‘的时候,就调用factory方法,不用去关心NoodleShop具体是如何实现的。

疑问

  • 直接调用new NoodleShop()方法也可以实现,为什么要写一个工厂方法?
  • 回答:1.如果我们有和’做面条‘无关的动作,但又是必须要做的检查,就可以放在工厂函数中,eg: 老板在做面条之前要先收钱,我要检查我自己带钱没。2.jQuery中的链式操作
posted @ 2019-05-17 17:44  meetqy  阅读(195)  评论(0编辑  收藏  举报