PHP設計模式之備忘錄模式

來源:互聯網
上載者:User

標籤:return   his   this   成功   應用   date   記錄   客戶   div   

<?php//備忘錄模式定義:備忘錄模式又叫做快照模式或Token模式,在不破壞封閉的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到原先儲存的狀態。// 角色:        //1.發起人:負責建立一個備忘錄,用以記錄當前時刻自身的內部狀態,並可使用備忘錄恢複內部狀態。發起人能夠依據須要決定備忘錄儲存自己的哪些內部狀態。//2.備忘錄:負責儲存發起人對象的內部狀態,並能夠防止發起人以外的其它對象訪問備忘錄。備忘錄有兩個介面:管理者僅僅能看到備忘錄的窄介面,他僅僅能將備忘錄傳遞給其它對象。發起人卻可看到備忘錄的寬介面。同意它訪問返回到先前狀態所須要的全部資料。//3.管理者:負責存取備忘錄,不能對內容進行訪問或者操作。/** * 發起人類 */class Sponsor{public $time = 36000;public $title = "奮鬥者";public $money = 0;public function subTime(){$this->time --;}public function addMoney(){$this->money += 1000;}public function changeTitle($title){$this->title = $title;}/** * 備份當前的基礎資料屬性 * @dateTime 2017-02-13 */public function backup(){return new Backup($this->time,$this->money,$this->title);}/** * 資料還原 * @dateTime 2017-02-13 */public function reback(Backup $backup){$this->time  = $backup->time;$this->title = $backup->title;$this->money = $backup->money;}}/** * 儲存類 */class Backup{public $time;public $title;public $money;public function __construct($time,$money,$title){$this->time  = $time;$this->title = $title;$this->money = $money;}}/** * 管理者類 */class Manager{public $data;}//用戶端應用$Sponsor = new Sponsor();//備份初始狀態$Manager = new Manager();$Manager->data = $Sponsor -> backup();while($Sponsor->time > 0){$Sponsor -> addMoney();$Sponsor -> subTime();if($Sponsor->money >= 1000000)$Sponsor -> changeTitle("驕傲者");if($Sponsor->money >= 10000000)$Sponsor -> changeTitle("能力者");if($Sponsor->money >= 100000000)$Sponsor -> changeTitle("成功者");}var_dump($Sponsor);//還原初始狀態$Sponsor->reback($Manager->data);var_dump($Sponsor);

  

PHP設計模式之備忘錄模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.