JS设计模式温习简单工厂模式工厂方法模式抽象工厂模式概念

Posted slgkaifa

tags:

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

注:空心箭头表示的是种继承关系,工厂类和产品类之间是一种依赖关系。是用箭头加虚线表示的,以下的模型图是用的实线是不正确(时间不够用,在这里我偷懒了。这个习惯不好,呵呵)

简单工厂模式(Simple Factory Pattern):
使用一个类(通常为单体)来创建实例;简单工厂模式也叫静态工厂方法模式(Static FactoryMethod Pattern).
技术分享
接口的定义通常是以I开头标识符,在JS中未定义接口或抽象类的语法;
var MacBikeFactory = {
  createBike : function() {
    return new MacBike();
  }
}
function IMacBike() {}
function MacBike() {}
	MacBike.prototype = {
  	constructor : MacBike,
  	getBike: function() {
    	console.log("创建一台Mac车");
  }
}
var macFn = MacBikeFactory.createBike();
macFn.getBike();

工厂方法模式
使用子类来决定一个成员变量应该是哪个详细的类的实例
技术分享

function IMacBikeFactory() {}
function MacBikeFactory()  {
  this.createBike() {
    return new MacBike();
  }
}
function IMacBike() {}
function MacBike() {}
	MacBike.prototype = {
  	constructor : MacBike,
  	getBike: function() {
    	console.log("创建一台Mac车");
  }
}

var macBikeFactory = new MacBikeFactory();
var macBike = IMacBikeFactory.createBike();
macBike.getBike(); 

在简单工厂模式中是通过一个单体来实例化一个详细产品,而在工厂方法模式中是把这个实例化的过程交给了抽象工厂的子类来创建的

抽象工厂模式
多个抽象产品类,每一个抽象产品类能够派生出多个详细产品类。 
 一个抽象工厂类,能够派生出多个详细工厂类。 
每一个详细工厂类能够创建多个详细产品类的实例。

 


技术分享
有二个抽象产品IBike和ICar类,它们分别派生二个详细产品
有一个IMall抽象工厂类,它派生出二个详细工厂AMall和BMall类
每一个详细工厂类又能够创建多个详细产品实例 AMall卖场销售BaoMa品牌的汽车和FengHuang品牌的自行车;BMall卖场销售FaLali品牌的汽车和JieAnTe品牌的自行车


以上是关于JS设计模式温习简单工厂模式工厂方法模式抽象工厂模式概念的主要内容,如果未能解决你的问题,请参考以下文章

PHP设计模式之工厂模式

js 工厂模式简单模式抽象模式

GOF三种工厂模式~

简单工厂模式+工厂方法模式+抽象工厂模式

抽象工厂模式

工厂模式,简单工厂模式,抽象工厂模式三者有啥区别