日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式19——行为型模式之备忘录模式

發(fā)布時間:2024/4/15 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式19——行为型模式之备忘录模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?定義:備忘錄模式(MementoPattern),在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。

類型:對象行為型模式。

概述:

??????????備忘錄模式使用的范圍比較窄,即比較復(fù)雜的狀態(tài)需要恢復(fù)到之前的狀態(tài)。現(xiàn)實更多的情況只有很簡單的狀態(tài)需要恢復(fù),如果用備忘錄模式有點大材小用的感覺。就像用大炮打蚊子,起不到什么作用。在《Head First Design Patterns》,備忘錄模式也被列為不常用的模式之一。

?????????備忘錄模式相對比較簡單,即把一個有著復(fù)雜狀態(tài)且需要恢復(fù)Originator的對象中的一些需要被保存的狀態(tài)再次抽象出來,并提供一些操作接口封裝成一個Memento類。這樣將極大簡化Originator類的復(fù)雜性。Memento的接口因為是操作狀態(tài)的,所以不應(yīng)該開放給更多的人知道,所以這里又繼續(xù)封裝了一個管理Memento類的Caretaker類,并提供一些簡單對外的接口。

????????恢復(fù)狀態(tài),其實玩過單機劇情類游戲的人都會馬上想到“存檔”這個功能。“存檔”功能在某種意義上就是備忘錄的一種應(yīng)用。這里即以我最喜歡的游戲Warcraft?III為示例。

類圖:

參與者:

  • Warcraft,也即Originator,它的狀態(tài)需要被記錄以及恢復(fù)。
  • Memento,抽象出Warcraft的內(nèi)部狀態(tài),并提供操作方法。
  • Caretaker,管理Memento,并向外提供記錄及恢復(fù)狀態(tài)的方法,但是不了解具體的執(zhí)行過程。
  • 示例代碼:

    ?

    [csharp]?view plaincopy
  • using?System;??
  • using?System.Collections.Generic;??
  • using?System.Text;??
  • namespace?Pattern19??
  • {??
  • ????class?Warcrift??
  • ????{??
  • ????????private?string?role;??
  • ????????public?string?Role??
  • ????????{??
  • ????????????get?{?return?role;?}??
  • ????????????set?{?role?=?value;?}??
  • ????????}??
  • ????????public?Memento?CreateMemento()??
  • ????????{??
  • ????????????return?(new?Memento(role));??
  • ????????}??
  • ????????public?void?SetMemento(Memento?memento)??
  • ????????{??
  • ????????????role?=?memento.Role;??
  • ????????}??
  • ????????public?void?Start()??
  • ????????{??
  • ????????????Console.WriteLine("There?is?a?"?+?role);??
  • ????????}??
  • ????}??
  • ????class?Memento??
  • ????{??
  • ????????private?string?role;??
  • ????????public?Memento(string?_role)??
  • ????????{??
  • ????????????this.role?=?_role;??
  • ????????}??
  • ????????public?string?Role??
  • ????????{??
  • ????????????get?{?return?role;?}??
  • ????????}??
  • ????}??
  • ????class?Caretaker??
  • ????{??
  • ????????private?Memento?memento;??
  • ????????public?Memento?Memento??
  • ????????{??
  • ????????????get?{?return?memento;?}??
  • ????????????set?{?memento?=?value;?}??
  • ????????}??
  • ????}??
  • ????class?Program??
  • ????{??
  • ????????static?void?Main(string[]?args)??
  • ????????{??
  • ????????????//?初始角色是英雄??
  • ????????????Warcrift?war3?=?new?Warcrift();??
  • ????????????war3.Role?=?"Hero";??
  • ????????????war3.Start();??
  • ????????????Caretaker?caretaker?=?new?Caretaker();??
  • ????????????caretaker.Memento?=?war3.CreateMemento();??
  • ????????????//?更換角色為小兵??
  • ????????????war3.Role?=?"Soldier";??
  • ????????????war3.Start();??
  • ????????????//?退回到初始狀態(tài)??
  • ????????????war3.SetMemento(caretaker.Memento);??
  • ????????????war3.Start();??
  • ????????}??
  • ????}??
  • }??


  • 適用性:

  • 必須保存一個對象在某一個時刻(部分)的狀態(tài),?這樣以后需要它時才能恢復(fù)到先前的狀態(tài)。
  • 如果一個用接口來讓其它對象直接得到這些狀態(tài),將會暴露對象的實現(xiàn)細(xì)節(jié)并破壞對象的封裝性。
  • 優(yōu)缺點:

  • 優(yōu)點,降低對象之間的耦合度,還降低管理對象的復(fù)雜度。
  • 缺點,如果需要存儲的信息非常多,將會贊成非常大的開銷。
  • 參考資料:

  • 《設(shè)計模式——可復(fù)用面向?qū)ο筌浖A(chǔ)》
  • 《大話設(shè)計模式》
  • 轉(zhuǎn)載于:https://www.cnblogs.com/feihe0755/p/3588519.html

    總結(jié)

    以上是生活随笔為你收集整理的设计模式19——行为型模式之备忘录模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 手机看黄色| 国产成人愉拍精品久久 | 极品国产在线 | 男女爽爽爽 | 国产精品日韩一区二区三区 | 在线你懂的视频 | 侵犯女教师一区二区三区 | 艳母动漫在线播放 | 国产色综合天天综合网 | 日韩激情在线播放 | 成av在线| 高清视频一区二区三区 | 日韩av综合网站 | 久久精品天天中文字幕人妻 | 国产视频1区2区 | 亚洲一级av无码毛片精品 | 狠狠操欧美 | 欧美性大战久久久久xxx | xxxx日本免费 | 四虎精品 | 蜜桃色999| 亚洲天堂高清 | 久久久久亚洲精品中文字幕 | 91黑丝美女 | 国产精品啪啪啪视频 | 亚洲av永久无码精品一百度影院 | 久久国色| 日韩黄色一区二区 | 婷婷丁香九月 | 都市激情校园春色亚洲 | 蜜桃av久久久亚洲精品 | 99久久精品国产成人一区二区 | 欧美gv在线 | 狠狠影院| 色呦 | 午夜久久久久久噜噜噜噜 | 日韩中文字幕一区二区三区 | 国产区精品视频 | 都市激情中文字幕 | 欧美jizz欧美性大全 | 男女高h视频 | 50部乳奶水在线播放 | 欧美 日韩 国产 精品 | 亚洲精品一区二区三区蜜桃 | 性色av蜜臀av | 久久有精品 | 男生和女生一起差差差很痛的视频 | av一级在线观看 | 免费黄网站在线看 | 污视频网站入口 | 美女视频黄a视频全免费观看 | av大片免费在线观看 | 超碰520| 日日干天天爽 | 在线亚洲成人 | 麻豆91精品91久久久 | 午夜激情小视频 | 鲁一鲁啪一啪 | 亚洲欧美日韩天堂 | 一区二区三区色 | 91精品欧美一区二区三区 | 欧洲一二三区 | 黄色午夜视频 | jizz中国少妇 | 久久香视频| 成人片在线播放 | 欧美精品一卡二卡 | 午夜资源| 精品人妻一区二区三 | 天天综合干 | 欧美va亚洲va | 欧美 日韩 国产 高清 | 少妇脱了内裤让我添 | 私人毛片| 又黄又免费的网站 | 欧美特黄一级视频 | 国产美女精品久久久 | 每日在线更新av | 久久免费黄色 | 久久亚洲av无码精品色午夜麻豆 | 蜜乳av 懂色av 粉嫩av | 久久网页 | 真人抽搐一进一出视频 | 在线成人欧美 | 久久视频一区二区三区 | 国产精自产拍久久久久久蜜 | 理论视频在线观看 | 夜噜噜| 精品一卡二卡三卡 | 无码国产精品96久久久久 | 国产一二三区av | 91av日本| 精品成人免费视频 | 国产视频欧美 | 色激情五月| 男女污污网站 | 狠狠做深爱婷婷久久综合一区 | 亚洲第一成人av | 兔费看少妇性l交大片免费 日韩高清不卡 |