簡單工廠模式又叫靜態工廠方法(static factory method)模式。簡單工廠模式主要是解決物件的建立問題,被建立的類通常都有相同的父類。在家的時候爸爸媽媽都喜歡看電視,爸爸關注新聞頻道,媽媽要看時裝頻道。寫成**就是如下形式:
public
class news
}
public
class fashion
}
public
class client }}
放學後,兒子回來了,兒子最愛看**片了。進行如下修改:
public
class cartoon
}
加了**頻道這個類後發現還不行,還要讓客戶端知道兒子要看**片,於是再進行修改:
public
class client }}
除夕夜外婆來了,外婆喜歡看小品…發現還得修改客戶端類,這就造成了很大的不便,來乙個人就要修改客戶端類,那麼,我們能不能做到即使家裡來了客人,客戶端類也不做任何改動呢?
簡單工廠模式可以改善這個問題,簡單工廠模式的核心思想就是用乙個單獨的類來建立類的例項,對呼叫方來說,只需要知道工廠類以及各物件的基類就可以了。
首先提取出乙個頻道介面,擁有**這個方法,新聞頻道、時裝頻道、**頻道均實現繼承頻道介面,uml類圖如下:
簡單工廠模式類圖
}我們將例項化新聞頻道等各個頻道的功能整合在乙個工廠類裡,只需要輸入相應的人,就能例項化出相應的頻道。
public
class channelfactory
return channel;}}
public
class client
}
執行結果:現在,不管誰來了,我們只需要加乙個頻道實現,並且修改一下工廠類就行,並不需要修改客戶端類了,也就是不需要修改呼叫方了。watch cartoon
簡單工廠模式的核心在於工廠類,使用者給出指定的資訊,就可以獲得乙個他想要的例項,而並不需要知道例項在內部是如何建立出來的,對軟體體系結構具有優化作用。
但由於所有例項的建立邏輯都集中在工廠類中,新加乙個類就得修改工廠類,所以它違反了高內聚的責任分配原則。
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...
工廠模式 簡單工廠
工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...