軟體構造 設計模式對比

2022-05-06 22:27:08 字數 1598 閱讀 4550

static factory 和 abstract factory

同:簡化了建立的過程。主要解決介面選擇的問題。

不同:static factory讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加。需要一輛汽車,可以直接從工廠裡面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裡面的具體實現。

abstarct factory圍繞乙個超級工廠建立其他工廠,提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。有一系列的車,電單車,汽車,生產廠商就是抽象工廠,福特就是具體工廠。電單車有各種型號的,汽車也是。比如電單車裡的哈雷就是乙個具體產品,汽車裡的吉普就是具體的汽車產品。我們取車時買汽車送摩托,這時候就會生成乙個具體汽車和摩托。

工廠方法模式:乙個抽象產品類,可以派生出多個具體產品類。 乙個抽象工廠類,可以派生出多個具體工廠類。 每個具體工廠類只能建立乙個具體產品類的例項。 抽象工廠模式: 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。 乙個抽象工廠類,可以派生出多個具體工廠類。 每個具體工廠類可以建立多個具體產品類的例項。 區別: 工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。 工廠方法模式的具體工廠類只能建立乙個具體產品類的例項,而抽象工廠模式可以建立多個。

abstract factory 和 builder

不同:builder

主要解決在軟體系統中,有時候面臨著」乙個複雜物件」的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。比如:去肯德基,漢堡、可樂、薯條、炸雞翅等是不變的,而其組合是經常變化的,生成出所謂的」**」。建造者模式更加關注與零件裝配的順序。

2.抽象工廠模式與builder模式的對比

bridge 和 strategy

strategy:在有多種演算法相似的情況下,使用 if…else 所帶來的複雜和難以維護。將這些演算法封裝成乙個乙個的類,任意地替換。

bridge:於把抽象化與實現化解耦,使得二者可以獨立變化。這種型別的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構,來實現二者的解耦。牆上的開關,可以看到的開關是抽象的,不用管裡面具體怎麼實現的。

橋更注重低耦合,而strategy注重自由替換策略。但這兩種封裝性都好。

3.橋接模式和策略模式的對比

strategy模式是為了擴充套件和修改,並提供動態配置。它往往可以在同一環境當中使用不同的策略,就是呼叫不同的派生類。其內部實現是自由的,不受已有的類介面的限制。bridge模式是往往是為了利用已有的方法或類。它將原來不統一,不相容的介面封裝起來,變成統一的介面。它的應用往往是不同的環境或平台下只能選擇一種,它的主要作用不是配置而是定義通用介面。

軟體構造設計模式(上)

visitor訪問者模式 observer觀察者模式 template模版模式 decorator裝飾器模式 adapter介面卡模式 指物件有某個行為,但在不同的場景中,該行為有不同的實現演算法。定義一系列演算法類,將每乙個演算法封裝起來,並讓它們可以相互替換。主要目的是將演算法的定義和使用分開,...

軟體構造複習 設計模式2

產品 工廠都是介面,具體產品 具體工廠實現介面,每個工廠只生產乙個產品 抽象工廠和工廠類似,只是乙個工廠可以生產一系列配套的元件,比如windows的視窗 按鈕等等,不再贅述 當載入物件代價較大時,可用 快取,避免重複載入 另一方面,也可用作 防火牆 將內外部資料隔離 類似新聞推送,明星維護觀察者佇...

設計模式 構造者模式

原始碼 from 萬方資料 朱進 構造者模式使用場景 include define buide c define finished 1 define unfinished 0 typedef struct splane plane typedef struct sconcretebuild conc...