Aha!設計模式 5 抽象工廠 4

2021-08-31 03:55:54 字數 1230 閱讀 9580

結構

下圖為抽象工廠模式的類圖。

這個類圖和前面出現過的類圖唯一的區別就是使用了更加抽象的類名。所以就不在重複說明了。

這裡說說另乙個話題:畫類圖。抽象工廠模式的類圖可以按照以下步驟(當然不是絕對的)畫出:

首先可以個畫出三個工廠類。

為每個工廠類新增兩個產生產品的操作/方法。

畫出兩個產品系列的繼承結構。

新增客戶類。

新增依賴關係。

作者有乙個觀點,第一步完成了就可以說是抽象工廠模式了。因為根據抽象工廠模式的想法,其他的部分幾乎都是必然的。

參與者

• abstractfacroty (widgetfactory )

— 宣告乙個建立抽象產品物件的操作介面。

•concretefactory (motifwidgetfactory,pmwidgetfactory )

— 實現建立具體產品物件的操作。

• abstractproduct (windows,scrollbar)

— 為一類產品物件宣告乙個介面。

• concreteproduct(motifwindow,motifscrollbar)

— 定義乙個將被相應的具體工廠建立的產品物件。

— 實現abstractproduct介面。

• client

— 僅使用由abstractfactory和abstractproduct類宣告的介面。

介紹每個類圖中每個類的職責,沒有什麼需要補充的。

要點歸納

如果讀完了《設計模式》,你會發現類圖中的一些規律:

1.需要實現替換/擴充套件是,就是使用多型。這時父類會設計成抽象類,父類操作會設計成虛函式。

2.客戶一般只和抽象類打交道。

3.在想要表達多個的時候,一般就用兩個來表示。

《設計模式》中類圖的規律,有些也是物件導向設計的原則。哪怕你不用設計模式也應該遵守。

注:

本文中藍色粗體文字都引自《設計模式》一書。

Aha!設計模式 2 抽象工廠 1

設計模式 的前兩章分別介紹設計模式的概要和乙個應用例項。對於乙個設計模式的初學者來講,應該不大好理解。我們直接進入具體的設計模式。本文從抽象工廠模式說起。名稱 在物件導向的世界裡,名稱具有很重要的含義。名稱一旦明確了,職責和行為差不多也就定了 反之如果沒有辦法為乙個類,方法命名,往往就是職責和行為不...

Aha!設計模式 3 抽象工廠 2

動機 設計模式 引言中對於動機的說明如下 用以說明乙個設計問題以及如何用模式中的類 物件來解決該問題的特定情景。該情景會幫助你理解隨後對模式更抽象的描述。簡單地說 就是設計模式的應用例項。回到抽象工廠模式的動機。考慮乙個支援多種視感 look and feel 標準的使用者介面工具包,例如 moti...

Aha!設計模式 7 抽象工廠 6

實 現 下面是實現abstract factor模式的一些有用技術 1 將工廠作為單件 乙個應用中一般每個產品系列只需乙個concretefactory的例項。因此工廠通常最好實現為乙個singleton 3.5 只有一句話,但是並沒有給出實現。為了說明這個問題,作者按照自己的理解,以前面提到的作業...