C++ 新經典:設計模式

C++ 新經典:設計模式

作者: 王健偉
出版社: 清華大學
出版在: 2022-08-01
ISBN-13: 9787302601982
ISBN-10: 7302601984





內容描述


用C++語言來講述設計模式的書非常少,絕大部分書籍是使用Java語言講述設計模式,而且能把設計模式講述得比較清楚的書也並不多見。絕大部分書籍在講解設計模式時所舉的例子和實際工作中所面對的真正項目差別很大,讀者學習後感覺不之所雲,更別提實際運用。設計模式知識本身並不復雜,但講解這門知識的難度非常大,設計模式主要應該講明白兩方面的知識:①某個設計模式對應的代碼怎樣編寫;②該設計模式解決了什麽樣的問題。只要這兩方面的知識講明白,自然就知道在什麽場合下應該採用這種設計模式。 本書面對的是希望系統學習C++設計模式方面知識的中高級C++開發者,書中將逐一詳解二十四個常見的設計模式。書中將擺脫以往枯燥的單純介紹設計模式的講解方法,以一個實際的游戲案例貫穿講解。當然,因為設計模式的應用場合復雜多變,無法在一個案例中覆蓋所有設計模式,那麽對於這種設計模式,筆者將單獨舉例進行講解。


目錄大綱


目錄
 
 
 
第1章設計模式與軟件開發思想、編程環境介紹
 
1.1設計模式概述
 
1.1.1設計模式基本概念
 
1.1.2設計模式中的抽象思維
 
1.1.3學習設計模式普遍存在的問題
 
1.1.4設計模式的缺點
 
1.1.5設計模式在實際工作中的應用和學習方法
 
1.1.6學習設計模式的態度、方法和本書的特點
 
1.2軟件開發思想、設計模式分類與講解規劃
 
1.2.1大型項目的軟件開發思想
 
1.2.2設計模式分類及講解規劃
 
1.3C++編程環境介紹
 
1.3.1C++編程環境搭建說明
 
1.3.2創建最基本的能運行的C++程序
 
1.3.3Visual Studio中程序的調試方法
 
第2章模板方法模式
 
2.1一個具體實現範例的逐步重構
 
2.2引入模板方法模式
 
2.3模板方法模式的UML圖
 
2.4程序代碼的進一步完善及應用聯想
 
第3章工廠模式、原型模式、建造者模式
 
3.1工廠模式
 
3.1.1簡單工廠模式
 
3.1.2工廠方法模式
 
3.1.3抽象工廠模式
 
3.2原型模式
 
3.2.1通過工廠方法模式演變到原型模式
 
3.2.2引入原型模式
 
3.3建造者模式
 
3.3.1一個具體實現範例的逐步重構
 
3.3.2引入建造者模式
 
3.3.3另一個建造者模式的範例
 
3.3.4建造者模式的總結
 
第4章策略模式
 
4.1一個具體實現範例的逐步重構
 
4.2依賴倒置原則
 
第5章觀察者模式
 
5.1一個遍歷問題導致的低效率範例
 
5.2引入觀察者模式
 
5.3應用聯想
 
第6章裝飾模式
 
6.1問題的提出
 
6.2引入裝飾模式
 
6.3另一個裝飾模式的範例
 
 
 
 
 
 
第7章單件模式
 
7.1單件類的基本概念和實現
 
7.2單件類在多線程中可能導致的問題
 
7.3餓漢式與懶漢式
 
7.4單件類對象內存釋放問題
 
7.5單件類定義、UML圖及另外一種實現方法
 
第8章外觀模式
 
8.1一個配置相關的範例
 
8.2引入外觀模式
 
8.3另一個外觀模式的範例
 
第9章命令模式
 
9.1通過一個範例引出命令模式代碼編寫方法
 
9.2引入命令模式
 
9.3命令模式用途研究
 
9.3.1改造範例增加對象使用時的獨立性
 
9.3.2命令模式使用場景與特點總結
 
第10章迭代器模式
 
10.1容器和迭代器的簡單範例
 
10.2單一職責原則
 
10.2.1單一職責原則的定義
 
10.2.2內聚與耦合
 
10.3迭代器模式的範例及現代C++中的迭代器
 
10.3.1迭代器模式範例
 
10.3.2現代C++中的迭代器
 
第11章組合模式
 
11.1一個基本的目錄內容遍歷範例
 
11.2使用組合模式改造目錄內容遍歷範例
 
11.3引入組合模式
 
11.4透明組合模式與安全組合模式
 
11.5其他使用組合模式的場景探討
 
第12章狀態模式
 
12.1一個基本的狀態轉換範例
 
12.2引入狀態模式
 
12.3狀態類的單件實現方式
 
第13章享元模式
 
13.1從一個典型的範例開始
 
13.2引入享元模式
 
第14章代理模式
 
14.1基本概念和範例
 
14.2引入代理模式
 
14.3代理模式的應用場合探究
 
14.3.1代理模式常用應用場景
 
14.3.2緩存/緩沖代理範例
 
第15章適配器模式
 
15.1一個簡單的範例
 
15.2引入適配器模式
 
15.3類適配器
 
15.4適配器模式的擴展運用
 
第16章橋接模式
 
16.1一個傳統的繼承範例導致子類數量爆炸式增長
 
16.2將類與類之間的繼承關系改為委托關系
 
16.3引入橋接模式
 
第17章中介者模式
 
17.1中介者的基本概念
 
17.2中介者模式範例的引入
 
17.3引入中介者模式
 
第18章備忘錄模式
 
18.1一個具體實現範例
 
18.2引入備忘錄模式
 
第19章職責鏈模式
 
19.1一個關於漲薪審批的範例
 
19.2引入職責鏈模式
 
19.3單純與非單純的職責鏈模式
 
第20章訪問者模式
 
20.1一個具體範例的逐漸演化
 
20.2引入訪問者模式
 
20.3訪問者模式深入理解
 
第21章解釋器模式
 
21.1一個用解釋器模式編寫的範例
 
21.2引入解釋器模式
 
21.3機器人運動控制範例
 
第22章設計模式總結
 
附錄A類和對象
A.1靜態對象的探討與全局對象的構造順序
 
A.1.1靜態對象的探討
 
A.1.2全局對象的構造順序問題
 
A.2拷貝構造函數和拷貝賦值運算符
 
A.2.1拷貝構造函數和拷貝賦值運算符的書寫
 
A.2.2對象自我賦值產生的問題
 
A.2.3繼承關系下拷貝構造函數和拷貝賦值運算符的書寫
 
A.2.4拷貝構造函數和拷貝賦值運算符中重復代碼的處理
 
A.3類的public繼承(isa關系)及代碼編寫規則
 
A.3.1子類遮蔽父類的普通成員函數
 
A.3.2父類的純虛函數接口
 
A.3.3父類的虛函數接口
 
A.3.4為純虛函數指定實現體
 
A.3.5類的public繼承(isa關系)綜合範例
 
A.3.6public繼承關系下的代碼編寫規則
 
A.4類與類之間的組合關系與委托關系
 
A.4.1組合關系
 
A.4.2委托關系
 
A.5類的private繼承探討
 
A.6不能被拷貝構造和拷貝賦值的類對象
 
A.7虛析構函數的內存泄漏問題深談
 
A.8類設計中的一些技巧
 
A.8.1優先考慮為成員變量提供訪問接口
 
A.8.2如何避免將父類的虛函數暴露給子類
 
A.8.3不要在類的構造函數與析構函數中調用虛函數
 
A.8.4析構函數的虛與非虛談
 
A.8.5抽象類的模擬
 
A.8.6盡量避免隱式類型轉換
 
A.8.7強制類對象不可以或只可以在堆上分配內存
 
A.9命名空間使用的一些註意事項
 
A.10類定義的相互依賴與類的前向聲明
 
附錄B引用計數基礎理論和實踐
 
B.1shared_ptr實現及string存儲簡單說明
 
B.1.1shared_ptr智能指針實現簡單說明
 
B.1.2string類型字符串存儲方式的簡單說明
 
B.2通過寫時復制方式實現的mystring類
 
B.2.1骨架與計數設計
 
B.2.2構造函數
 
B.2.3拷貝構造函數
 
B.2.4析構函數
 
B.2.5拷貝賦值運算符
 
B.2.6外部加鎖、內部加鎖、寫時復制
 
B.2.7通過指針修改mystring所指字符串的內容




相關書籍

Quantum Computing Experimentation with Amazon Braket: Explore Amazon Braket quantum computing to solve combinatorial optimization problems

作者 Khan Alex

2022-08-01

數據結構(C語言描述)

作者 李曄

2022-08-01

Mastering Rust: Learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition, 2nd Edition

作者 Rahul Sharma Vesa Kaihlavirta

2022-08-01