常見的設計模式及其C 實現(一) 各種工廠模式

2021-08-19 06:22:04 字數 2007 閱讀 5661

我是看《大話設計模式》學的設計模式,書上的例子是用c#寫的,並且為了清晰地表達設計模式的優點寫的**很龐大。我這裡用c++改寫一下,做一下簡化,以方便複習和總結,順帶練習一下畫uml圖。

這裡可以認為所有的類都是定義在服務端的,而main函式在客戶端。

三種工廠模式都是建立型的設計模式。現在有乙個工廠要生產幾種產品,這個簡單的工廠自己可以判斷生產哪一種。

簡單工廠模式

#include

#include

using

namespace

std;

class

producer

};class

classa:

public producer

};class

classb:

public producer

};class

factory

case

'b':

}

}};int

main

()

簡單工廠模式不符合開放封閉原則。

現在有不止乙個工廠了,總工廠只負責指揮,子工廠決定如何生產。

工廠模式

#include

#include

using

namespace

std;

class

producer

};class

producera:

public producer

};class

producerb:

public producer

};class

factory

;class

factorya:

public factory

}; class

factoryb:

public factory

};int

main

()

可能看到這就已經發現了,如果工廠引入了新的生產線,那麼就要對工廠的結構做調整,引入新的部門來管理新生產線。

抽象工廠

這個圖里對介面的實現其實應該用虛線表示,但是staruml的介面太醜了,就勉強用實現代替了。

#include

#include

using

namespace

std;

class

department1

;class

department2

;class

producera1:

public department1

};class

producerb1:

public department1

};class

producera2:

public department2

};class

producerb2:

public department2

};class

factory

;class

factorya:

public factory

producera2* produce2

()};

class

factoryb:

public factory

producerb2* produce2

()};

intmain

()

各種排序演算法及其C 實現

基本思想 每次將乙個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序 直到待排序資料元素全部插入完為止。基本思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完為止。基本思想 兩兩比較待排序資料元素的大小,發...

(C 實現)設計模式一 工廠模式

工廠模式 工廠模式在簡單工廠模式的基礎上將工廠也抽象為乙個抽象工廠,不同的產品放在不同的工廠中取生產 在不同的工廠子類中例項化 include include include include using namespace std define samplefactory 抽象運算類 class o...

C 常見設計模式 工廠模式

設計模式是對設計原則的具體化。用江湖話說就是武林秘籍,總結出來的一些固定套路,可以幫助有根基的程式設計師迅速打通任督二脈,從此做什麼都特別快。工廠模式主要是為建立物件提供了介面。應用場景如下 a 在編碼時不能預見需要建立哪種類的例項。b 系統不應依賴於產品類例項如何被建立 組合和表達的細節。主要特點...