php实现设计模式之 备忘录模式
2014-11-03 15:23
597 查看
<?php /*备忘录模式:在不破坏封装的前提下,获取对象的内部状态,并且在对象外保存该状态。这样就可以将该对象恢复到保存之前的状态(行为模式) * * 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 * 备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。 * 管理角色:对备忘录进行管理,保存和提供备忘录。 */ //发起人,它有需求需要将自身状态保存起来,自身包含备忘与恢复操作 class origin{ private $state; public function setstate($state){ $this->state = $state; } public function show(){ echo $this->state."<br/>"; } public function setmemento(){//保存至备忘录 return new memento($this->state); } public function restore(memento $memento){//获取备忘录中存取的状态,恢复 $this->state = $memento->getstate(); } } class memento{//备忘录,存储状态 private $state; public function __construct($state){ $this->state = $state; } public function getstate(){ return $this->state; } } class caretaker{//管理人,管理备忘录 private $memento; public function getmemento(){ return $this->memento; } public function setmemento($memento){ $this->memento = $memento; } } $org = new origin(); $org->setstate('open'); $org->show(); $memento = $org->setmemento();//发起人要将状态保存,生成备忘录 $persion = new caretaker(); $persion->setmemento($memento); $org->setstate('close'); $org->show(); $org->restore($memento);//恢复 $org->show(); ?>
UML类图:
相关文章推荐
- 《模式——工程化实现及扩展》(设计模式C# 版)《备忘录模式 Memento》——“自我检验" 参考答案
- 《模式——工程化实现及扩展》(设计模式C# 版)《备忘录模式 Memento》——“自我检验"
- PHP设计模式笔记:使用PHP实现桥梁模式
- php设计模式之备忘录模式
- PHP设计模式之单例模式实现
- [设计模式]head first 设计模式之PHP实现 第二章 观察者模式
- 设计模式——单例模式的实现[备忘录]
- PHP设计模式笔记:使用PHP实现工厂模式
- php中使用接口实现工厂设计模式的代码
- PHP设计模式笔记:使用PHP实现适配器模式
- 学习php设计模式 php实现策略模式(strategy)
- PHP设计模式之观察者模式实现DEMO
- 设计模式-PHP实现单件模式的几种方式
- PHP设计模式笔记:使用PHP实现单例模式
- php使用接口实现工厂设计模式
- 设计模式-PHP实现单件模式的几种方式
- [设计模式]head first 设计模式之PHP实现 第一章
- [设计模式]head first 设计模式之PHP实现 第一章 练习题代码
- PHP设计模式笔记:使用PHP实现单例模式
- 单例模式——php单例模式的运用,用单例模式设计实现多例