C++編程思想第二版第二卷筆記5——設計模式

來源:互聯網
上載者:User

 

設計的原則是將易變的元素與穩定的元素分開。separate things that change from things that stay the same.

設計模式的目標是把變化封裝起來。The goal of design patterns is to encapsulate change.

要著手構思一個設計模式之前,捫心自問:“這裡真的需要使用繼承嗎?使用繼承的話有什麼好處?”

GoF的23個設計模式分為三類:建立型(creational)、結構型(structural)、行為型(behavioral)。

Fonctor:將fonction封裝到類中。

Singleton:只能有一個對象的類。

Command:將函數行為與調用地點分離。

使用代理的四種場合:

1.       遠程代理。

2.       虛擬代理。提供“懶惰初始化”,主要用於開銷龐大的對象,可以只在需要這樣的對象時才構建對象。

3.       保護性代理。用於保護代理對象,避免使用者取得完全訪問權。

4.       Smart reference。在訪問代理對象時附加一些行為。引用計數是一個例子:記錄一個特定對象被引用的次數,用於應用寫時複製(copy-on-write)並防止對象混淆。

Factory和Builder的主要區別是:Builder產生的是一個整體的各個組件,而Factory產生的是不同的整體。

Observer:解決某對象改變狀態時,一批對象需要更新的問題。

Multiple dispatching多重指派:解決多重對象相互互動情況下的指派問題,如不同資料類型的加、減、乘、除等運算。

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.