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

首頁 > 編程 > PHP > 正文

詳解PHP設計模式之備忘錄模式

2020-03-22 18:57:36
字體:
來源:轉載
供稿:網友
本文主要介紹了php設計模式中的備忘錄模式,使用php實現備忘錄模式,感興趣的小伙伴們可以參考一下。希望對大家有所幫助。

一、意圖
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣可以在以后把該對象的狀態恢復到之前保存的狀態。

二、備忘錄模式結構圖

三、備忘錄模式中主要角色
1、備忘錄(Memento)角色:
存儲發起人(Originator)對象的內部狀態,而發起人根據需要決定備忘錄存儲發起人的哪些內部狀態。
備忘錄可以保護其內容不被發起人(Originator)對象之外的任何對象所讀取。
2、發起人(Originator)角色:
創建一個含有當前的內部狀態的備忘錄對象
使用備忘錄對象存儲其內部狀態
3、負責人(Caretaker)角色:
負責保存備忘錄對象,不檢查備忘錄對象的內容
四、備忘錄模式的優點和缺點
備忘錄模式的優點:
1、有時一些發起人對象的內部信息必須保存在發起人對象以外的地方,但是必須要由發起人對象自己讀取。
2、簡化了發起人(Originator)類。發起人(Originator)不再需要管理和保存其內部狀態的一個個版本,客戶端可以自行管理它們所需要的這些狀態的版本
3、當發起人角色的狀態改變的時候,有可能這個狀態無效,這時候就可以使用暫時存儲起來的備忘錄將狀態復原。
備忘錄模式的缺點:
1、如果發起人角色的狀態需要完整地存儲到備忘錄對象中,那么在資源消耗上面備忘錄對象會很昂貴。
2、當負責人角色將一個備忘錄存儲起來的時候,負責人可能并不知道這個狀態會占用多大的存儲空間,從而無法提醒用戶一個操作是否會很昂貴。
3、當發起人角色的狀態改變的時候,有可能這個狀態無效。
五、備忘錄模式適用場景
1、必須保存一個對象在某一個時刻的(部分)狀態,這樣以后需要時它才能恢復到先前的狀態。
2、如果一個用接口來讓其它對象直接得到這些狀態,將會暴露對象的實現細節并破壞對象的封裝性。
六、備忘錄模式與其它模式
1、命令模式(command模式):Command模式也可以用來恢復對象的狀態,一般Command模式可以支持多級狀態的回滾,Memento只是簡單的恢復(快照)。在Command模式的每一個undo中,可以使用Memento來保存對象的狀態。
2、迭代器模式(Iterator模式):備忘錄可以用于迭代
七、備忘錄模式PHP示例

<?php/** * 發起人(Originator)角色 */html' target='_blank'>class Originator {   private $_state;   public function __construct() {    $this->_state = '';  }   /**   * 創建備忘錄   * @return Memento 包含當前狀態的備忘錄對象   */  public function createMemento() {    return new Memento($this->_state);  }   /**   * 將發起人恢復到備忘錄對象記錄的狀態上   * @param Memento $memento   */  public function restoreMemento(Memento $memento) {    $this->_state = $memento->getState();  }   public function setState($state) {    $this->_state = $state;  }   public function getState() {    return $this->_state;  }   /**   * 測試用方法,顯示狀態   */  public function showState() {    echo "Original Status:", $this->getState(), "<br />";  } } /** * 備忘錄(Memento)角色 */class Memento {   private $_state;   public function __construct($state) {    $this->setState($state);  }   public function getState() {    return $this->_state;  }   public function setState($state) {    $this->_state = $state;  } } /** * 負責人(Caretaker)角色 */class Caretaker {   private $_memento;   public function getMemento() {    return $this->_memento;  }   public function setMemento(Memento $memento) {    $this->_memento = $memento;  } } /** * 客戶端 */class Client {   /**   * Main program.   */  public static function main() {     /* 創建目標對象 */    $org = new Originator();    $org->setState('open');    $org->showState();     /* 創建備忘 */    $memento = $org->createMemento();     /* 通過Caretaker保存此備忘 */    $caretaker = new Caretaker();    $caretaker->setMemento($memento);     /* 改變目標對象的狀態 */    $org->setState('close');    $org->showState();     /* 還原操作 */    $org->restoreMemento($caretaker->getMemento());    $org->showState();  } } Client::main();?>

相關推薦:

PHP設計模式之橋接模式詳解

PHP設計模式之代理模式詳解

PHP設計模式之策略模式詳解

以上就是詳解PHP設計模式之備忘錄模式的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产高清高潮精品美女| 日本精品久久久久影院| 欧美巨猛xxxx猛交黑人97人| www欧美xxxx| 欧美日韩精品国产| 国产丝袜精品视频| 欧美激情国内偷拍| 亚洲一区免费网站| 亚洲香蕉伊综合在人在线视看| 亚洲视频axxx| 亚洲成人av在线| 欧美黄色小视频| 久久久国产一区二区三区| 宅男66日本亚洲欧美视频| 国产精品69精品一区二区三区| 91精品视频在线免费观看| 2018国产精品视频| 国产91精品久久久| 欧美亚洲另类制服自拍| 3344国产精品免费看| 日韩中文字幕国产精品| 91极品视频在线| 欧美综合在线第二页| 久久人人爽亚洲精品天堂| 成人av在线亚洲| 久久久这里只有精品视频| 成人免费看黄网站| 国语自产精品视频在线看一大j8| 国产美女被下药99| 欧美色视频日本高清在线观看| 欧美日韩国产色| 国产精品ⅴa在线观看h| 欧美日韩国产区| 欧美孕妇孕交黑巨大网站| 91精品成人久久| 国产一区二区三区在线观看网站| 欧美高跟鞋交xxxxxhd| 亚洲成人1234| 性欧美亚洲xxxx乳在线观看| 日韩精品小视频| 亚洲欧美日韩综合| 久久精品国产久精国产一老狼| 日韩精品亚洲精品| 日韩中文字幕在线视频| 国产一区二区三区免费视频| 国产成人亚洲综合91精品| 成人看片人aa| 国产精品成人aaaaa网站| 色多多国产成人永久免费网站| 亚洲高清久久久久久| 欧美电影在线观看高清| 日韩精品视频在线| 日韩av综合中文字幕| 久久国产精品久久国产精品| 不卡av电影院| 国产亚洲一级高清| 亚洲深夜福利网站| 欧美激情在线观看视频| 国产日韩欧美在线| 色七七影院综合| 欧美与欧洲交xxxx免费观看| 欧美精品久久久久久久久| 亚洲欧美国产精品久久久久久久| 精品中文字幕在线2019| 一区二区国产精品视频| 国产一区二区色| 中文字幕国产亚洲2019| 日韩中文字幕网| 日韩av一区二区在线| 欧美性高潮在线| 久久免费少妇高潮久久精品99| 国产精品自拍视频| 国产精品久久久久久久久免费| 国产综合福利在线| 91免费人成网站在线观看18| 国产精品视频播放| 国产欧美日韩精品在线观看| 51色欧美片视频在线观看| 亚洲成人动漫在线播放| 国产日韩在线精品av| 欧美成在线观看| 精品久久久91| 久久99久久99精品免观看粉嫩| 国产成人涩涩涩视频在线观看| 久久久精品一区二区三区| 日韩美女免费视频| 国产成人涩涩涩视频在线观看| 永久免费精品影视网站| 欧美老肥婆性猛交视频| 色偷偷91综合久久噜噜| 色综久久综合桃花网| 日韩a**中文字幕| 日韩成人激情在线| 亚洲男人天堂手机在线| 精品国产1区2区| 91精品久久久久| 亚洲精品720p| 亚洲欧美国内爽妇网| 亚洲一区二区久久久久久| 九九精品视频在线观看| 日韩在线免费视频| 日韩av第一页| 国语自产精品视频在线看抢先版图片| 色悠久久久久综合先锋影音下载| 欧美日韩国产第一页| 久久久久久久久久久久久久久久久久av| 亚洲欧美日韩久久久久久| 日韩精品极品视频免费观看| 粗暴蹂躏中文一区二区三区| 97精品国产97久久久久久春色| 日韩av中文字幕在线播放| 红桃视频成人在线观看| 久久精品在线播放| 国产在线精品播放| 亚洲乱码国产乱码精品精| 亚洲毛片在线免费观看| 成人激情电影一区二区| 九九久久久久久久久激情| 性色av一区二区三区免费| 久久国产精品久久久久久| 在线亚洲欧美视频| 中文字幕一区日韩电影| 色偷偷av一区二区三区| 久久91精品国产91久久久| 国产精品久久久久久久电影| 欧美午夜女人视频在线| 亚洲欧美精品在线| 欧美最猛性xxxxx亚洲精品| 日韩精品免费综合视频在线播放| 国产日本欧美在线观看| 欧美精品videosex极品1| 欧美在线视频一区二区| 98精品国产高清在线xxxx天堂| 激情成人中文字幕| 国产伦精品免费视频| 97视频在线观看视频免费视频| 亚洲国产精品女人久久久| 久久精品99久久香蕉国产色戒| 黑人巨大精品欧美一区免费视频| 欧美黄色小视频| 国产在线一区二区三区| 亚洲 日韩 国产第一| 亚洲美女久久久| 色偷偷噜噜噜亚洲男人| 91精品国产九九九久久久亚洲| 久久电影一区二区| 亚洲精品国产品国语在线| 国外日韩电影在线观看| 欧美一级视频在线观看| 亚洲国产精品高清久久久| 欧美成人三级视频网站| 精品成人国产在线观看男人呻吟| 国产精品黄色影片导航在线观看| 91精品国产91久久久久久不卡| 国产精品精品视频一区二区三区| 日韩在线视频观看正片免费网站| 欧美性猛交99久久久久99按摩| 亲爱的老师9免费观看全集电视剧| 深夜精品寂寞黄网站在线观看| 欧美精品videos性欧美| 日韩电影中文 亚洲精品乱码| 中文字幕欧美亚洲| 欧美亚洲国产视频| 欧美三级欧美成人高清www|