工廠模式是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
與簡單工廠模式相比,製造產品的工廠類再也不 只有一個,而是每種具體產品類都對應一個生產它的具體工廠類。而這些具體工廠類的共同特徵再被提取出來造成一個抽象產品類,這些具體產品類都繼承自這個抽象產品類。每當有新的需求,增長一種繼承在抽象工廠的具體工廠類,它符合開閉原則。