簡單工廠模式

2022-06-02 07:54:08 字數 1325 閱讀 3837

設計模式:目的是讓**更容易修改,更加容易擴充套件。ios中的設計模式主要用於降低類與類之間的耦合性,是程式思路更加明確而創立的

定義:1.簡單工廠模式:實質是有乙個工廠類根據傳入的引數,動態決定決定應該建立哪乙個產品類

工廠模式包含三個部分:

(1)工廠角色:接收客戶請求,通過請求建立相應的物件

(2)抽象產品:是工廠所建立的父親或共同擁有的介面,可以是抽象類或介面

(3)具體產品:工廠模式所建立的都是這個角色的例項

優缺點:

(1)工廠類含有必要的建立何種產品的邏輯,這樣客戶只需要請求需要的產品,無需理會產品的實現細節。

(2)工廠類只有乙個,它集中了所有的建立的邏輯。它將是整個系統的瓶頸,造成系統難以擴充套件

(3)簡單工廠模式通常使用靜態工廠方法,這使得工廠類無法由子類繼承,這使得工廠角色無法形成基於繼承的等級結構。

簡單工廠模式違背了設計模式中公開封閉原則

使用工廠模式製作簡單計算器的uml圖

2.工廠方法模式:

工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來執行,要想加功能本來是改工廠類的,現在要改客戶端。

有四個部分組成:

抽象工廠角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。

抽象產品角色:擔任這個角色的類是工廠方法模式所建立的物件的父類,或它們共同擁有的介面

具體產品角色:抽象工廠模式所建立的任何產品物件都是某乙個具體產品類的例項。這是客戶端最終需要的東西,其內部一定充滿了應用系統的商業邏輯。

工廠模式的優缺點:

工廠方法克服了簡單工廠違背開放-封閉原則的缺點,又保持了封裝物件建立過程的優點

工廠方法的缺點是由於每加乙個產品,就需要加乙個產品工廠的類,增加了額外的開發量。

工廠方法的uml圖

3.抽象工廠模式:

使用場景:乙個系統不應當依賴與產品類例項如何被建立,組合和表達的細節,這對於所有形態的工廠模式都是重要的

這個系統有多於乙個的產品族,而系統只消費其中某一產品族。

同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來

系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。

抽象工廠模式與工廠方法模式的區別

工廠方法模式:每個抽象產品派生多個具體產品類,每個抽象工廠類派生多個具體工廠類,每個具體工廠類負責乙個具體產品的例項建立; 

抽象工廠模式:每個抽象產品派生多個具體產品類,每個抽象工廠派生多個具體工廠類,每個具體工廠負責多個(一系列)具體產品的例項建立。 

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...