设计模式之创建型抽象工厂模式

Posted 专注前端开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之创建型抽象工厂模式相关的知识,希望对你有一定的参考价值。

通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责某一类产品的实例。
抽象类是一种声明但不能使用的类,当你使用的时候就会报错。javascript中的抽象类不能像传统面向对象语言那样轻松地创建,我们可以在类的方法中手动抛出错误来模拟抽象类。你可能会想,这样的类什么都不能做有什么用?其实它在继承上是很有用的。
抽象工厂模式不能用来创建具体对象,一般用它作为父类创建一些子类。

// 抽象工厂方法
var PageFactory = function(parent, child) {
  // 判断抽象工厂中是否有该抽象类
  if(typeof PageFactory[child] === ‘function‘) {
    // 缓存类
    function F() {};
    // 继承父类属性和方法
    F.prototype = new PageFactory[child]();
    // 将子类构造函数指向子类
    parent.constructor = parent;
    // 子类原型继承父类
    parent.prototype = new F();
  } else {
    // 不存在该抽象类抛出错误
    throw new Error(‘未创建该抽象类‘);
  }
};
// CSS抽象类
PageFactory.MyCss = function() {
  this.type = ‘css‘;
};
PageFactory.MyCss.prototype = {
  getElement: function() {
    return new Error(‘抽象方法不能调用‘)
  }
};
// JS抽象类
PageFactory.MyJs = function() {
  this.type = ‘js‘;
};
PageFactory.MyJs.prototype = {
  getElement: function() {
    return new Error(‘抽象方法不能调用‘);
  }
};

抽象工厂实际上是一个子类继承父类的方法,在该方法中需要通过传递子类以及继承父类的名称。
抽象工厂模式是设计模式中最抽象的一种,也是创建模式中唯一一种抽象化创建模式。该模式创建出的结果不是一个真实的对象实例,而是一个类簇,指定了类的结构。

以上是关于设计模式之创建型抽象工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

6创建型模式之工厂模式与抽象工厂模式

浅析设计模式——创建型模式之Abstract-Factory(抽象工厂模式)

设计模式从青铜到王者第七篇:创建型模式之抽象工厂模式(Abstract Factory)

设计模式——创建型模式之抽象工厂模式

C#设计模式之三抽象工厂模式(AbstractFactory)创建型

一起来学设计模式-----创建型模式之抽象工厂