JS 简单工厂模式,工厂模式(二)

一.什么是工厂模式:

工厂模式就是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,而是讲逻辑封装到一个函数中,那么,这个函数 就可以被视为一个工厂。工厂模式根据抽象程度的不同分为简单工厂模式,工厂模式和抽象工厂模式。今天呢,主要和大家分享一下简单工厂和工厂模式这两种。

二.什么是简单工厂模式:

简单工厂模式又叫静态工厂模式,由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类对象。简单工厂模式可以理解成,一个工厂只生产各种球的工厂,比如篮球,足球这些,客户购买的时候,只表明自己想要类型的球就可以,不必考虑球是怎么生产的。

<el-button @click="open1"></el-button>
<el-button @click="open2"></el-button>
<el-button @click="open3"></el-button> data () {
  return {
    obj: {
      a: "dialogA",
      b: "dialogB",
      c: "dialogC",
    },
    dialogA: false,
    dialogB: false,
    dialogC: false
  }
}
methods:{
open1() {
  this.open('dialogA)
},
open2() {
  this.open('dialogB')
},
open3() {
  this.open('dialogC)
}
open(val) { this[obj(val)] = true } }

  

简单工厂的优点,在于只需要一个正确的参数,就可以获取所需要的对象,而无需知道其创建的具体细节。但是在函数内,包含了所有对象的创建逻辑,和判断逻辑的代码,每增加新的构造函数还需要修改判断逻辑代码,当我们对象过多的情况下,就难以维护了。所以简单工厂只能作用于创建的对象数量较少,对象的创建逻辑不复杂使用。

三。工厂方法模式:

工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心就变成了抽象类。但是在js中很难像传统面向对象那样去实现创建抽象类。所以在js中我们需要参考他的核心思想。我们将工厂方法看作是一个实例化对象的工厂类,他只做实例化对象这一件事情。

其实,可以简单理解为一个体育用品的工厂,可以生产球类、护具类等,然后球类里面还包含篮球,足球这些。工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象。这样做的目的是将产品类的实例化操作延时到工厂子类中完成,即通过工厂子类来确定究竟应该是实例化哪一个具体产品类。

<button @click="open1">点击1</button>
    <button @click="open2">点击2</button>
    <button @click="clickON">点击3</button>
init() {
      this.name = name 
      this.initEvent(name);
    },
    initEvent(name) {
      // 定义websocket的方法
      let obj = {
        a: function() {
          console.log('点击1')
        },
        b:function() {
          console.log('点击2',)
        },
        c:function() {
          console.log('点击3')
        }
      }
      obj[name]()
    },
    open1() {
      this.initEvent('a')
    },
    open2() {
      this.initEvent('b')
    },
    clickON() {
      this.initEvent('c')
    }

猜你喜欢

转载自www.cnblogs.com/mn6364/p/10396039.html