原创 設計模式10--Flyweight模式(享元模式)---結構型模式

       在面向對象系統的設計何實現中,創建對象是最爲常見的操作。這裏面就有一個問題:如果一個應用程序使用了太多的對象,就會造成很大的存儲開銷。特別是對於大量輕量級(細粒度)的對象,比如在文檔編輯器的設計過程中,我們如果爲沒有字母創建

原创 設計模式9--Composite模式(組合模式)---結構型模式

在開發中,我們經常可能要遞歸構建樹狀的組合結構,Composite 模式則提供了很好的解決方案。 //Component.h #pragma once #include <memory> class Component { publi

原创 C++封裝、繼承和多態簡單總結

通常用一個專門的抽象類作爲封裝的接口類來操作子類,抽象類不能實例化,只能指針操作子類的對象。       通過賦值,也就是接口的指針指向子類實例化對象的內存塊。       編譯器通過指針來訪問成員變量,指針指向哪個對象就使用哪個對象的數

原创 設計模式5--Prototype模式(原型模式)---創建型模式

           Prototype 模式也正是提供了自我複製的功能,就是說新對象的創建可以通過已有對象進行創建。在 C++中拷貝構造函數(Copy Constructor)曾經是很對程序員的噩夢,淺層拷貝和深層拷貝的魔魘也是很多程序

原创 設計模式23--Interpreter模式(解釋器模式)---行爲型模式

       一些應用提供了內建(Build-In)的腳本或者宏語言來讓用戶可以定義他們能夠在系統 中進行的操作。Interpreter 模式的目的就是使用一個解釋器爲用戶提供一個一門定義語言的 語法表示的解釋器,然後通過這個解釋器來解釋

原创 設計模式14--Strategy模式(策略模式)---行爲型模式

         Strategy 模式和 Template 模式要解決的問題是相同(類似)的,都是爲了給業務邏輯(算 法)具體實現和抽象接口之間的解耦。Strategy 模式將邏輯(算法)封裝到一個類(Context) 裏面,通過組合的

原创 設計模式19--Command模式(命令模式)---行爲型模式

           Command 模式通過將請求封裝到一個對象(Command)中,並將請求的接受者存放到 具體的 ConcreteCommand 類中(Receiver)中,從而實現調用操作的對象和操作的具體實現 者之間的解耦。

原创 設計模式22--Iterator模式(迭代器模式)---行爲型模式

       Iterator 模式應該是最爲熟悉的模式了,最簡單的證明就是我在實現 Composite 模式、 Flyweight 模式、Observer 模式中就直接用到了 STL 提供的 Iterator 來遍歷 Vector 或者

原创 設計模式16--Observer模式(觀察者模式)---行爲型模式

         Observer 模式應該可以說是應用最多、影響最廣的模式之一,因爲 Observer 的一個實 例 Model/View/Control(MVC)結構在系統開發架構設計中有着很重要的地位和意義,MVC 實現了業務邏輯和

原创 設計模式18--Mediator模式(中介者模式)---行爲型模式

       在面向對象系統的設計和開發過程中,對象之間的交互和通信是最爲常見的情況,因爲 對象間的交互本身就是一種通信。在系統比較小的時候,可能對象間的通信不是很多、對象 也比較少,我們可以直接硬編碼到各個對象的方法中。但是當系統規模變

原创 設計模式17--Memento模式(備忘錄模式)---行爲型模式

       沒有人想犯錯誤,但是沒有人能夠不犯錯誤。犯了錯誤一般只能改過,卻很難改正(恢 復)。世界上沒有後悔藥,但是我們在進行軟件系統的設計時候是要給用戶後悔的權利(實 際上可能也是用戶要求的權利:)),我們對一些關鍵性的操作肯定需要

原创 設計模式21--Chain of Responsibility模式(職責鏈模式)---行爲型模式

       熟悉 VC/MFC 的都知道,VC 是“基於消息,事件驅動”,消息在 VC 開發中起着舉足 輕重的作用。在 MFC 中,消息是通過一個向上遞交的方式進行處理,例如一個 WM_COMMAND 消息的處理流程可能爲: 1) MD

原创 設計模式15--State模式(狀態模式)---行爲型模式

      每個人、事物在不同的狀態下會有不同表現(動作),而一個狀態又會在不同的表現下 轉移到下一個不同的狀態(State)。最簡單的一個生活中的例子就是:地鐵入口處,如果你 放入正確的地鐵票,門就會打開讓你通過。在出口處也是驗票,如果

原创 設計模式20--Visitor模式(訪問者模式)---行爲型模式

        在面向對象系統的開發和設計過程,經常會遇到一種情況就是需求變更(Requirement Changing),經常我們做好的一個設計、實現了一個系統原型,咱們的客戶又會有了新的需 求。我們又因此不得不去修改已有的設計,最常見

原创 設計模式13--Template模式(模板方法模式)---行爲型模式

      在面向對象系統的分析與設計過程中經常會遇到這樣一種情況:對於某一個業務邏輯 (算法實現)在不同的對象中有不同的細節實現,但是邏輯(算法)的框架(或通用的應用 算法)是相同的。Template 提供了這種情況的一個實現框架。 T