類建立型設計模式 簡單工廠模式

2021-10-06 03:28:45 字數 1871 閱讀 6089

本文章根據劉偉(sunny) 的設計模式一書記錄的筆記,感謝作者的知識分享。

工廠模式是最常用的一類建立型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將要學習的簡單工廠模式是工廠方法模式的「小弟」,它不屬於gof 23種設計模式,但在軟體開發中應用也較為頻繁,通常將它作為學習其他工廠模式的入門。此外,工廠方法模式還有一位「大哥」——抽象工廠模式。這三種工廠模式各具特色,難度也逐個加大,在軟體開發中它們都得到了廣泛的應用,成為物件導向軟體中常用的建立物件的工具。

簡單工廠模式:定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式

簡單工廠模式的要點在於:當你需要什麼,只需要傳入乙個正確的引數,就可以獲取你所需要的物件,而無須知道其建立細節。簡單工廠模式結構比較簡單,其核心是工廠類的設計。

在簡單工廠模式結構圖中包含如下幾個角色:

在簡單工廠模式中,客戶端通過工廠類來建立乙個產品類的例項,而無須直接使用new關鍵字來建立物件,不需要考慮這個產品是如何生成的.客戶端得到產品之後,可以直接使用.

模式結構圖如圖:

不使用設計模式:

產品類十分龐大複雜,需要擴充套件時,就需要重新修改產品類的**,同時裡面包含大量的if-else**.

使用簡單工廠模式重構:

//抽象圖表介面:抽象產品類  

inte***ce

chart

//柱狀圖類:具體產品類

class

histogramchart

implements

chart

public

void

display()

}//餅狀圖類:具體產品類

class

piechart

implements

chart

public

void

display()

}//折線圖類:具體產品類

class

linechart

implements

chart

public

void

display()

}//圖表工廠類:工廠類

class

chartfactory

else

if(type.

equalsignorecase

("pie"))

else

if(type.

equalsignorecase

("line"))

return chart;}}

class

client

}

每次需要擴充套件增加新的產品的時候,只需要繼承產品介面,修改工廠類中的**就可以實現擴充套件.

sunny軟體公司開發人員發現在建立具體chart物件時,每更換乙個chart物件都需要修改客戶端**中靜態工廠方法的引數,客戶端**將要重新編譯,這對於客戶端而言,違反了「開閉原則」.

簡單工廠模式提供了專門的工廠類用於建立物件,將物件的建立和物件的使用分離開,它作為一種最簡單的工廠模式在軟體開發中得到了較為廣泛的應用。

設計模式 建立型 工廠 簡單工廠模式

動態決定哪個類被例項化,不必事先知道哪個類要被例項化!三 舉例 qq裡面常用發表情的 1 表情 b new smile 這種應該是很熟悉的建立方式 2 表情 b 表情工廠.createbiaoqing 表情內容 四 角色與結構 工廠類角色 creator bqfctory,在creat方法下建立產品...

設計模式 建立型 簡單工廠模式

建立型模式中工廠模式有三兄弟,先從簡單工廠講起。工廠模式中包含了產品與工廠兩個物件,其中產品是是乙個個具體的物件,而工廠負責生產這些產品。例如現在我們的需求是有兩個食品要在食品廠加工。兩個食品分別叫做麵包和巧克力,要在食品廠加工。通過需求分析出應該有如下幾個類,麵包類 巧克力類 食品加工廠類。由於麵...

設計模式 建立型 簡單工廠

之前學習了設計模式的原則,下面我們正式學習這些模式。設計模式分為了三個大類分別是建立型模式 結構型模式 和行為型模式。首先建立型模式 顧名思義他是用來描述如何建立物件的 建立型模型的分類 簡單工廠模式 抽象工程模式,單例模式 原型模式 建造者模式。簡單工廠 提供了專門的工廠類用於建立物件 將物件的建...