我是看《大話設計模式》學的設計模式,書上的例子是用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 系統不應依賴於產品類例項如何被建立 組合和表達的細節。主要特點...