工厂模式是23中设计模式中的一种,它属于建立型设计模式,可细分为三种:分别是简单工厂模式,工厂方法模式,抽象工厂模式。
1、简单工厂模式
简单工厂模式属于类的建立型模式,又叫静态工厂方法模式。经过专门定义一个工厂类来负责建立其余类的实例,被建立的实例一般都具备共同的父类。
举例说明:
如今有个工厂,能够生产自行车和摩托车,经过外界的订单来生产产品。
class FACTORY {
Product(type) {
var production;
switch(type) {
case 'bike' :
production = new Bike();
break;
case 'moto' :
production = new Moto();
break;
}
return production
}
}
class Bike {
product() {
console.log('生产自行车');
}
}
class Moto {
product() {
console.log('生产摩托车车');
}
}
let order = new ORDER();
console.log('order',order.Product('bike).product());
在上边代码中,工厂类做为最核心存在,他包含了处理业务的逻辑,可以根据外界的条件去建立具体的类,也就是说可以根据订单内容去生产相关产品,无需关注自行车,摩托车是怎么生产的。可是简单虽然简单,当业务
类型多的时候,会不断的向工厂类添加功能,把全部功能都集中到一个类上,足够多的时候这给类难以维护而且臃肿,这违反了开闭原则。
2、工厂方法模式设计模式
工厂方法模式是对简单工厂模式的稍微的改进,它定义一个用于建立对象的接口,让子类决定实例化哪个类。针对上述问题,假如每次添加一种新的产品,都要去更改工厂内部,工厂方法模式就是将这个大厂拆分出各个小厂,每次添加新的产品让小厂去生产,大厂负责指挥就行了。设计
class FACTORY {对象
construct(){ 继承
}接口
}产品
class SONFACTORY extends FACTORY {it
Product(type) {
var production;
switch(type) {
case 'bike' :
production = new Bike();
break;
case 'moto' :
production = new Moto();
break;
}
return production
}io
}console
class Bike
product() {
console.log('生产自行车');
}
}
class Moto{
product() {
console.log('生产摩托车车');
}
}class
与简单工厂模式相比,制造产品的工厂类再也不 只有一个,而是每种具体产品类都对应一个生产它的具体工厂类。而这些具体工厂类的共同特征再被提取出来造成一个抽象产品类,这些具体产品类都继承自这个抽象产品类。每当有新的需求,增长一种继承在抽象工厂的具体工厂类,它符合开闭原则。