感謝GOF
感謝K_Eckel frwei@whu.edu.cn
感謝愛人
感謝家人
轉載請注明來源
希望能和兄弟們交流 jetty jetty2k_kyj@163.com
**************************************************************
架構設計,目前理解來看,就是對概念的 分級,分離/組合,通信
分級: 比如 繼承,比如 大模塊下的小模塊
分離: 比如 對象分類,組件分類
組合: 比如 類對象的組合
通信: 比如 通過接口,通過類WinMsg
1. 創建型模式
1.1 Factory Method(工廠方法)[一般對象創建]
1. 用類C1自身特色構造函數封裝對象的創建
創建的調用在抽象工廠類的子類的虛函數F1中
創建后,可添加初始化代碼于F1中,F1返回C1對象指針
C1對象指針可 工廠析構時自動[安全] 或 不用時手動[效率] 釋放
2. 擴展(模板類法)
將抽象工廠類的子類做成模板類
傳入Cn作為參數,就實現了編譯時類變化支持
3. 擴展(配置文件法)
可增加Key,ClassName對應的Xml配置文件
再由 m##n 宏 將ClassName轉成對應的標識符來調用
這樣,先將可能用到的Class都定義好,調用流程寫好
更改Xml配置文件,就實現了運行時類變化支持
1.2 Abstract Factory(抽象廠工)[相關聯的一組對象創建]
1. 在Factory Method(工廠方法)的基礎上
在抽象工廠類中為每一組具有相同創建過程的對象
建立一個虛函數,其他類同Factory Method(工廠方法)
2. 如果虛函數不多,就只用一個抽象工廠的子類,
用函數名字劃分產品線(男鞋線/女鞋線)
3. 如果虛函數較多,可用多個抽象工廠的子類,
用類名(食品廠/鞋廠)劃分產品線,
相關聯的對象的創建就在一起了
1.3 Singleton(單件)[保證僅有一個實例]
1. 私有化 類構造函數
只能通過靜態成員函數Instance來生成這個唯一對象
用靜態私有成員變量保存這個唯一實例對象的指針
用靜態公有函數GetInstance返回這個指針
注意在類析構時,SafeDel這個指針
2. 上面的具體工廠類,就應該是一個Singleton對象
1.4 Builder(生成器)[相同構造算法得到不同的復雜對象](STL)
1. 分離 構造算法(穩定) 與 構造參數(不穩定)
2. 需要 算法函數隊列 迭代器 容器
3. 例如 STL中的算法 nth_element
1.5 Prototype(原型)[自我復制]
1. 代碼
Prototype* ConcretePrototype::Clone() const
{
return new ConcretePrototype(*this); //拷貝構造函數
}
2. 注意 類成員為 指針或復雜對象 時,拷貝構造函數 的 深層拷貝
2. 結構型模式
2.1 Bridge(橋接)[分離接口與實現]
1. 接口類A 為 實現類B 的父類
2. A類中有類B對象的指針,可用函數賦值
3. 從而使類A的接口功能完整化,且實現獨立
未完,待續……