在建立型設計模式,最大的特點就是把,封裝了物件的例項化過程!本文主要試說一下工廠的演化:簡單工廠,工廠方法,抽象工廠。
我把設計模式的應用放到乙個遊戲場景的建立上,
在遊戲場景中,需要建立牆,根據場景不同有現代、古代等不同的牆。可以得到以下的關係,
modernwall
和classicalwall
有共同的牆父類
如果僅僅只有兩種或者固定的幾種子類
wall
,可用簡單工廠模式,引入工廠類,將牆例項化過程,封裝其中,可根據主要例項化要求「年代」作為傳入引數,動態例項化物件。
但如果,要新增牆子類,就要去修改引入的工廠類(
******factory
),這就違背了「開放
-封閉」原則。既然把所有子類例項的建立封裝到乙個工廠類破壞原則,那就把每個子類例項建立過程都交給各自相應的工廠。
然後,抽象出乙個工廠介面;當需要建立某例項時,由各自的工廠類去實現該工廠介面來建立例項,即:工廠類決定了例項化哪個產品類(哪種牆)。
經過這樣的一番演化,這就成了工廠方法模式。
但遊戲場景中,不但但有牆,還有房子,同樣對於年代,也要創建立
最明顯的特徵是可以按照系列進行分類
,如下圖:
對於工廠方法
,每新增乙個子類
,就要新增乙個工廠.
如果,按照系列建立系列工廠
並且對工廠抽象出介面,當使用哪個系列物件的時候,就選擇相應系列的工廠去實現介面來建立物件。
這就是抽象工廠了!
生活中的設計模式 工廠模式的演化
1 混沌初開階段 張 三 李四 王五合住一套公寓,每天早上,大家自己準備早餐,重複勞動,效率低下。2 專業分工階段 經商議,決定由張三統一負責早餐,其他人只需要向他購買即可,工廠雛形的概念出現了。3 提公升效率階段 張三為了提公升效率,購買了九陽豆漿機,可以生成豆漿 花生漿 玉公尺漿等各類產品,改善...
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...