3中工廠模式的比較
比較對象:簡單工廠模式
工廠方法模式
抽象工廠模式
概念解釋:
簡單工廠模式: 簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
工廠方法模式:工廠方法(Factory Method)模式的意義是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。核心工廠類不再負責產品的創建,這樣核心類成爲一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
抽象工廠模式:抽象工廠模式是所有形態的工廠模式中最爲抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。根據LSP原則,任何接受父類型的地方,都應當能夠接受子類型。因此,實際上系統所需要的,僅僅是類型與這些抽象產品角色相同的一些實例,而不是這些抽象產品的實例。換言之,也就是這些抽象產品的具體子類的實例。工廠類負責創建抽象產品的具體子類的實例。
3種工廠模式之間的比較:
另外,由於簡單工廠模式使用靜態方法創建,這就導致靜態方法無法被繼承(All Languages)。
所以,簡單工廠模式適用於創建的對象比較少或簡單的情況。
但是工廠方法模式無法體現產品之間的關係,如果有兩個不同的產品需要創建,就需要兩個不同的工廠類,即使這兩個產品有某鍾必要的聯繫,也還是需要兩個不同的工廠類。
在抽象工廠模式中,一個具體的工廠類負責創建一系列相互關聯的產品,當一系列相互關聯的產品被設計到一個工廠類裏後,客戶端的調用變得非常簡單;如果要更換這一系列的產品,只需要更換一個工廠類即可,但零件之間的組裝如果放到客戶端,則客戶端變得非常臃腫,如果把零件之間的組裝放在工廠類裏,則又違反了工廠類單一職責的原則,使得工廠類既要負責對象的創建,又要負責產品的組裝。