亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

設計模式中的備忘錄模式解析及相關C++實例應用

2020-01-26 14:41:58
字體:
來源:轉載
供稿:網友

備忘錄模式旨在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣以后就可將該對象恢復到原先保存的狀態。在命令模式中,備忘錄模式經常還經常被用來維護可以撤銷(Undo)操作的狀態。

類圖:

201631094239513.png (621×284)

  • Originator:負責創建一個備忘錄Memento,用以記錄當前時刻它的內部狀態,并可使用備忘錄恢復內部狀態。Originator可根據需要決定Memento存儲Originator的哪些內部狀態。
  • Memento:負責存儲Originator對象的內部狀態,并可防止Originator以外的其他對象訪問備忘錄Memento。備忘錄有兩個接口,Caretaker只能看到備忘錄的窄接口,它只能將備忘錄傳遞給其他對象。Originator能夠看到一個寬接口,允許它訪問返回到先前狀態所需的所有數據。
  • Caretaker:負責保存好備忘錄Memento,不能對備忘錄的內容進行操作或檢查。

Memento模式中封裝的是需要保存的狀態,當需要恢復的時候才取出來進行恢復.原理很簡單,實現的時候需要注意一個地方:窄接口和寬接口.所謂的寬接口就是一般意義上的接口,把對外的接口作為public成員;而窄接口反之,把接口作為private成員,而把需要訪問這些接口函數的類作為這個類的友元類,也就是說接口只暴露給了對這些接口感興趣的類,而不是暴露在外部.下面的實現就是窄實現的方法來實現的.

Memento模式比較適用于功能比較復雜的,但需要維護或記錄歷史屬性的類,或者需要保存的屬性只是眾多屬性中的一小部分時,Originator可以根據保存的Memento信息還原到前一狀態。

如果在某個系統中使用命令模式時,需要實現命令的撤銷功能,那么命令模式可以使用備忘錄模式來存儲可撤銷操作的狀態。
實例:

#include <iostream> #include <string> using namespace std;  class Memento { private:   string state;  public:   Memento(string state)     :state(state)   {}   string GetState()   {     return state;   }   void SetState(string state)   {     this->state = state;   } };  class CareTaker { private:   Memento *memento;  public:   void SetMemento(Memento *memento)   {     this->memento = memento;   }   Memento* GetMemento()   {     return this->memento;   } };  class Originator { private:   string state;    public:   Originator(string state)   {     this->state = state;   }    void RestoreMemento(Memento *memento)   {     state = memento->GetState();   }    Memento *CreateMemento()   {     return new Memento(state);   }    void SetState(string state)   {     this->state = state;   }    void ShowState()   {     cout<< this->state <<endl;   } };  int main() {   Originator *originator = new Originator("2012年11月11日,光棍節,一個人,沒有女朋友");   CareTaker *caretaker = new CareTaker();   caretaker->SetMemento(originator->CreateMemento());      cout<<"2012年11月11日,光棍節早晨的狀態是:"<<endl;    originator->ShowState();    originator->SetState("中午參加同學婚禮去了,錦府鹽幫飯店");   originator->ShowState();    cout<<"晚上回來的狀態是"<<endl;   originator->RestoreMemento(caretaker->GetMemento());   originator->ShowState();    cout<<"跟早晨一樣,嗨"<<endl;    system("pause");   return 0; } 

輸出是這樣的

201631094329663.png (677×441)

備忘錄模式適用性:

  • 必須保存一個對象在某一個時刻的(部分)狀態, 這樣以后需要時它才能恢復到先前的狀態。
  • 如果一個用接口來讓其它對象直接得到這些狀態,將會暴露對象的實現細節并破壞對象的封裝性。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕最新精品| 亚洲欧美在线x视频| 欧美一区二区视频97| 97热在线精品视频在线观看| 国产精品免费一区二区三区都可以| 国产精品福利无圣光在线一区| 国产日韩欧美中文| 色综合天天综合网国产成人网| 性色av一区二区三区| 亚洲精品视频免费| 国产一区二区三区在线观看网站| 亚洲国产成人在线播放| 国产伦精品免费视频| 国产91精品黑色丝袜高跟鞋| 5278欧美一区二区三区| 欧美福利视频在线观看| 国产69精品99久久久久久宅男| 亚洲一区二区中文字幕| 2024亚洲男人天堂| 亚洲美女喷白浆| 欧美高清理论片| 日韩午夜在线视频| 最新的欧美黄色| 川上优av一区二区线观看| 欧洲亚洲妇女av| 国产成人精品午夜| 亚洲综合精品伊人久久| 狠狠色狠狠色综合日日五| 人妖精品videosex性欧美| 久久精品99国产精品酒店日本| 精品国产一区av| 久久影视电视剧凤归四时歌| 最近中文字幕日韩精品| 久久久久久亚洲| 久操成人在线视频| 91精品国产91久久久久福利| 欧美电影免费观看高清完整| 亚洲福利在线观看| 亚洲图片制服诱惑| 最近2019中文字幕mv免费看| 国产精品99久久久久久www| 精品久久久久久国产91| 日本精品va在线观看| 91最新在线免费观看| 欧美老少配视频| 中文字幕精品www乱入免费视频| 欧美风情在线观看| 亚洲大尺度美女在线| 欧美精品第一页在线播放| 高清欧美性猛交xxxx| 91天堂在线观看| 亚洲天堂免费在线| 性色av一区二区三区在线观看| 一区二区三区亚洲| 日本免费久久高清视频| 成人黄色大片在线免费观看| www.日韩系列| 青青草原成人在线视频| 欧美成人精品在线视频| 久久久久北条麻妃免费看| 91精品国产自产在线观看永久| 日韩电影中文字幕在线| 国产精品扒开腿做| 欧美激情va永久在线播放| 日韩精品中文字幕视频在线| 亚洲福利在线观看| 中文字幕精品一区二区精品| 久久久噜噜噜久久| 久久精品国产96久久久香蕉| 久久久99久久精品女同性| 欧美视频不卡中文| www.99久久热国产日韩欧美.com| 亚洲永久在线观看| 亚洲美女视频网站| 久久亚洲私人国产精品va| 国自产精品手机在线观看视频| 久久久久久久久久久亚洲| 亚洲男人天堂2024| 日本精品一区二区三区在线播放视频| 奇米一区二区三区四区久久| 亚洲国产欧美一区二区三区久久| 久久久久久噜噜噜久久久精品| 日韩成人在线播放| 日韩激情第一页| 国产黑人绿帽在线第一区| 国产精品一区二区久久精品| 国产91成人video| 91色琪琪电影亚洲精品久久| 亚洲视频欧美视频| 91中文字幕一区| 97精品国产91久久久久久| 日韩在线观看电影| 成人免费在线视频网址| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲最大福利网站| 中文字幕亚洲一区二区三区五十路| 国产视频精品免费播放| 日本一区二区在线播放| 菠萝蜜影院一区二区免费| 亚洲第一区中文99精品| 亚洲精品视频二区| 91深夜福利视频| 成人久久久久久| 欧美性猛交丰臀xxxxx网站| 国产一区二区三区在线视频| 国产精品高清免费在线观看| 国产精品jizz在线观看麻豆| 一区二区三区美女xx视频| 精品视频在线播放色网色视频| 亚洲iv一区二区三区| 日本精品久久久久久久| 国产精品视频大全| 亚洲精品91美女久久久久久久| 欧美国产中文字幕| 98午夜经典影视| 久久99精品久久久久久噜噜| 国产精彩精品视频| 亚洲免费av网址| 88国产精品欧美一区二区三区| 欧美亚洲伦理www| 亚洲精品久久久久中文字幕欢迎你| 欧美黄色三级网站| 一区国产精品视频| 久久久亚洲福利精品午夜| 在线精品高清中文字幕| 亚洲美女自拍视频| 欧美情侣性视频| 精品美女久久久久久免费| 日本人成精品视频在线| 色小说视频一区| 欧美大人香蕉在线| 欧美精品电影免费在线观看| 欧美又大又粗又长| 日本一区二三区好的精华液| 亚洲伊人第一页| 91国产视频在线播放| 亚洲国产日韩欧美综合久久| 久久男人av资源网站| 久久精品国产2020观看福利| 亚洲欧美日本伦理| 国产精品成久久久久三级| 国产精品成人播放| 国产精品自产拍高潮在线观看| 日韩在线观看免费全集电视剧网站| 日韩av中文字幕在线播放| 亚洲欧美综合图区| 亚洲人成电影在线播放| 久久影视电视剧免费网站清宫辞电视| 国产精品欧美在线| 亚洲国产成人在线播放| 亚洲xxxx做受欧美| 久久人人看视频| 国产美女精彩久久| 亚洲欧美国产精品专区久久| 三级精品视频久久久久| 成人国产在线激情| 亚洲www在线| 日本三级韩国三级久久| 日韩三级影视基地| 欧美国产第一页| 亚洲网站在线观看| 久久五月情影视| 日本午夜精品理论片a级appf发布| 国产精品视频网址|