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

通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责某一类产品的实例。
抽象类是一种声明但不能使用的类,当你使用的时候就会报错。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(‘抽象方法不能调用‘);
  }
};

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

时间: 2024-10-01 03:06:31

设计模式之创建型抽象工厂模式的相关文章

创建型-抽象工厂模式学习

1.抽象工厂模式的意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.抽象工厂模式的适用性: 一个系统要独立于它的产品的创建.组合和表示时. 一个系统要由多个产品系列中的一个来配置时. 当你要强调一系列相关的产品对象的设计以便进行联合使用时. 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 3.场景描述: 考虑一个生产多种不同风格的家具的工厂(FurnitureFactory),不同风格的家具系列可以提供不同的门.窗.地板等的组合,为同一所住房可以提供不同

设计模式之创建型简单工厂模式

简单工厂模式是由一个方法来决定到底要创建哪个类的实例,而这些实例经常都拥有相同的接口.这种模式主要用在所实例化的类型在编译期并不能确定,而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮. 由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类对象.用简单工厂来创建对象,可以减少全局变量创建提高代码复用率,它的使用场合限制在创建单一对象. // MyCss基类 var MyCss = function() { this.intro = '用于

设计模式(3)--抽象工厂模式(Absrtact Factory Pattern)

定义 抽象工厂模式的实质就是提供接口来创建一系列相关或独立的对象而不指定这些对象的具体类. 理解 在软件系统中,经常面临着"一系列相互依赖的对象"的创建工作:同时由于需求的变化,往往存在着更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象的创建方法(熟悉的new操作符),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合?这就是我们要说的抽象工厂模式.抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂

设计模式(三)——抽象工厂模式

设计模式(三)--抽象工厂模式 一.抽象工厂模式 1.抽象工厂模式简介 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. UML类图: 2.抽象工厂模式角色 (1)抽象工厂AbstractFactory:抽象工厂类,提供创建两种产品的接口CreateProductA和CreateProductB,由派生的各个具体工厂类对其实现 (2)具体工厂:包括具体工厂FactoryM和具体工厂FactoryN.具体工厂FactoryM用于生产具体产品MProductA和具体产品M

Java设计模式(创建型:工厂方法模式+抽象工厂模式)

设计模式根据目的准则可以分为三类: 创建型:creational 创建型的设计模式与对象的创建有关. 结构型:Structural 处理类和对象之间的组合. 行为型:behavioral 描述类和对象如何交互及如何分配职责. 工厂方法模式 站在使用者的角度,工厂方法模式是指使用者提出想要实现的具体功能或者说是想要生产的具体的东西的要求,在通过工厂制造之后就将该东西或功能交付给使用者.使用者并不知道实现的具体过程,只是做了要求提出以及实现的结果的使用. 严谨来说工厂方法模式(Factory Met

设计模式(三)抽象工厂模式(AbstractFactory)-创建型

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象.根据LSP原则,任何接受父类型的地方,都应当能够接受子类型.因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例.换言之,也就是这些抽象产品的具体子类的实例.工厂类负责创建抽象产品的具体子类的实例. 抽象工厂模式与工厂方法模式的区别

设计模式(二)抽象工厂模式

抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类.每个生成的工厂都能按照工厂模式提供对象. 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 主要解决:主要解决接口选择的问题. 何时使用:系统的产品有多于一个的产品族,而系统只消费其

设计模式(3)抽象工厂模式(Abstract Factory)

设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂模式一般的书面定义为:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 提供创建接口,无需指定具体实现类,这个原则在简单工厂模式和工厂方法模式篇已经反复讲到了,这是面向接口编程的一个基本准则,很显然,从抽象工厂模式的一般定义中可以看出这也是抽象工厂模式的一个核心,而抽象工厂模式的另

设计模式(4)----抽象工厂模式

介绍: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象.根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型.因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例.换言之,也就是这些抽象产品的具体子类的实例.工厂类负责创建抽象产品的具体子类的实例. 定义: 为创建一组相关