首页 > 代码库 > PHP设计模式之备忘录模式
PHP设计模式之备忘录模式
<?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 = http://www.mamicode.com/$Sponsor -> backup();"骄傲者"); if($Sponsor->money >= 10000000) $Sponsor -> changeTitle("能力者"); if($Sponsor->money >= 100000000) $Sponsor -> changeTitle("成功者"); } var_dump($Sponsor); //还原初始状态 $Sponsor->reback($Manager->data); var_dump($Sponsor);
PHP设计模式之备忘录模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。