工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 。工廠方法模式的意義是定義乙個建立
產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
定義乙個fruit介面
public
inte***ce fruit
public
class
implements
fruit
}
定義乙個banana類實現fruit
public
class
banana
implements
fruit
}
下面和簡單工廠模式不一樣了,定義工廠介面fruitfactory
public
inte***ce fruitfactory
public
class
implements
fruitfactory
}
同樣,定義bananafactory類實現fruitfactory
public
class
bananafactory
implements
fruitfactory
}
例項化物件,需要先建立對應的工廠,再從對應的工廠去例項物件
public
class mainclass
}
1.抽象工廠(creator,相當於fruitfactory)角色工廠方法模式的核心,任何工廠類都必須實現這個介面。
3.抽象(product,相當於fruit)角色工廠方法模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
工廠方法模式與簡單工廠模式在結構上的不同不是很明顯。
工廠方法類的核心是乙個抽象工廠類,而簡單工廠模式把核心放在乙個具體類上。
工廠方法模式之所以有乙個別名叫多型性工廠模式是因為具體工廠類都有共同的介面,或者有共同的抽象父類。
當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了「開放-封閉」原則,而簡單工廠模式在新增新產品物件後不得不修改工廠方法,擴充套件性不好。
工廠方法模式退化後可以演變成簡單工廠模式。
設計模式(2) 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使用乙個類的例項化延遲到子類。舉個栗子 我們要生產水果罐頭,我們應該怎麼做呢?首先,我們需要準備好原料。其次我們需要乙個罐頭工廠,往工廠裡運送不同的原料,出來的就是不同的罐頭。原料就是蘋果啊 橘子啊等等的這些類。int...
設計模式2 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。類圖 抽象產品類product負責定義產品的共性,實現對事物最抽象的定義。creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的...
設計模式2 工廠方法模式
定義 定義乙個建立物件的介面,但讓實現這個介面的類來決定例項化哪個類。工廠方法讓類的例項化推遲到子類中進行。注 可能有人覺得定義中說的有點不好懂。下面摘抄的解釋 工廠方法讓子類決定要例項化的類是哪乙個。所謂的 決定 並不是指模式允許子類本身在執行時做決定,而是指在編寫建立者類時,不需要知道實際建立的...