設計模式 工廠方法 抽象工廠模式

2021-06-08 09:39:27 字數 1823 閱讀 4328

在業務邏輯中往往有需要建立物件的需求;

如何將這部分邏輯封裝並且使得其能個適應於頻繁的變化呢?

簡單工廠模式

將物件建立邏輯封裝隔離在簡單工廠類的方法中。

簡單工廠的常見實現方式

1)簡單工廠類以及其建立物件的靜態方法;其客戶可以直接呼叫該類的靜態方法。

2)簡單工廠類以及其建立物件的成員方法;其客戶**需要依賴於這個簡單工廠類,首先建立其實例,然後呼叫建立物件的方法。

好處和不足

物件建立邏輯僅僅是被封裝起來,可供復用並與業務**解耦。

但是建立物件的邏輯本身還是不易於擴充套件,不能適應於變化。

定義了乙個建立物件的介面,有子類決定決定如何建立物件完成例項化。工廠方法模式將類建立物件的邏輯推遲到了子類。

工廠方法模式

業務邏輯中有需要建立的需求,那麼就把這部分**抽象成為乙個物件建立者creator;

即客戶**邏輯流程中某個步驟中需要建立一些物件,那麼把這部分建立物件的邏輯封裝成為乙個抽象方法——即工廠方法;

為了解決簡單工廠模式的不足,每個物件建立者的工廠方法由其子類來實現,這樣面對變化時只要有不同的子類繼承實現creator的工廠方法,就可以解決建立物件邏輯本身的變化問題

工廠方法模式類圖

引用:product

定義工廠方法所建立的物件的介面,也就是實際需要使用的物件的介面。

concreteproduct:

具體的product介面的實現物件。

creator:

建立器,宣告工廠方法,工廠方法通常會返回乙個product型別的例項物件,而且多是抽象方法。也可以在creator裡面提供工廠方法的預設實現,讓工廠方法返回乙個預設的product型別的例項物件。

concretecreator:

具體的建立器物件,覆蓋實現creator定義的工廠方法,返回具體的product例項。

抽象工廠模式

抽象工廠的任務是定義乙個負責建立一組產品的介面。

這個介面中的每個方法建立乙個具體的產品,利用抽象工廠的子類類實現每個方法。——而這裡可以看出體現了工廠方法模式

的思想。

抽象工廠模式類圖

引用:抽象工廠不足

當建立一組產品的介面要求的產品變化時,相關實現也要變化。

工廠方法和抽象工廠模式區別

2)模式形式不同:工廠方法——繼承;抽象工廠——組合

實踐中工廠方法有兩種形式

1)如果乙個工廠方法只會建立一種物件,則無引數。

2)如果乙個工廠方法會選擇的從一堆物件中建立乙個物件,則為引數化的工廠方法。

實踐中常用的

1)簡單工廠模式——如果僅僅需要隔離物件建立邏輯的話。

2)抽象工廠方法模式——使用組合的方式,使用應該多過工廠方法模式。

常見應用框架中對於工廠方法模式、抽象工廠模式的應用舉例

設計模式 工廠模式(工廠方法 抽象工廠)

1 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。正如建立交通工具,可以通過不同的工廠方法建立所需的物件。類圖 對比 1 工廠方法在產品維度,即類圖中movable方向拓展比較方便,只需增加對應的類及相應的工廠方...

設計模式 工廠方法模式 抽象工廠模式

最近擠了擠時間出來看了下設計模式,汗!總算來總結點東東了,最近專案忙得暈頭轉向了啊t.t好了言歸正傳,開始總結。理論定義來一套 設計模式 design patterns 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。設計...

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...