C++ 新經典:設計模式

王健偉

  • C++ 新經典:設計模式-preview-1
  • C++ 新經典:設計模式-preview-2
  • C++ 新經典:設計模式-preview-3
C++ 新經典:設計模式-preview-1

買這商品的人也買了...

商品描述

用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所指字符串的內容