【一天一个设计模式】03- 备忘模式
时间:2008-11-07
来源:互联网
(再次声明,例子来源于网络,并非我原创。。。)
好了,来到第3篇了。。。。每天坚持不容易啊,只是不知道我能不能坚持到第23个。。。。
今天学的是备忘模式,简单理解比喻下就是类似平时我们用的word"撤销","恢复"。。。
不多说了,还是上例子直观一些
1、UNDO
<?php
//备忘类
class Memento
{
public function backup()
{
//保存现有的分页样式
echo '样式已经保存<br>';
}
public function restore()
{
//用保存的样式去覆盖
echo '样式已经恢复<br>';
}
}
----------------------------------------------------
//设置分页样式
class ListStyle
{
//备忘对象
private $memento;
//构造方法
public function __construct()
{
$this->memento = new Memento();
}
//设置样式
public function setStyle()
{
//开始先备份样式
$this->memento->backup();
//设置样式
echo '设置了样式<br>';
}
//撤销方法
public function undo()
{
$this->memento->restore();
}
}
----------------------------------------------------
$listStyle = new ListStyle();
//设置样式,同时备份
$listStyle->setStyle();
//撤销设置
$listStyle->undo();
?>
2、REDO
<?php
//备忘类
class Memento
{
public function backup()
{
//保存现有的分页样式
echo '样式已经保存<br>';
}
public function restore()
{
//用保存的样式去覆盖
echo '样式已经恢复<br>';
}
}
//设置分页样式
class ListStyle
{
//备忘对象
private $memento;
//构造方法
public function __construct()
{
$this->memento = new Memento();
}
//设置样式
public function setStyle()
{
//开始先备份样式
$this->memento->backup();
//设置样式
echo '设置了样式<br>';
}
//撤销方法
public function undo()
{
//先保存,为了redo
$this->memento->backup();
$this->memento->restore();
}
//重做方法
public function redo()
{
$this->memento->restore();
}
}
$listStyle = new ListStyle();
//设置样式,同时备份
$listStyle->setStyle();
//撤销设置
$listStyle->undo();
//重做设置
$listStyle->redo();
?>
简单总结下,就是有相应的一个类,来做backup和restore用的。。。。
这个模式还算比较好理解。。。(*^__^*)
好了,来到第3篇了。。。。每天坚持不容易啊,只是不知道我能不能坚持到第23个。。。。
今天学的是备忘模式,简单理解比喻下就是类似平时我们用的word"撤销","恢复"。。。
不多说了,还是上例子直观一些
1、UNDO
<?php
//备忘类
class Memento
{
public function backup()
{
//保存现有的分页样式
echo '样式已经保存<br>';
}
public function restore()
{
//用保存的样式去覆盖
echo '样式已经恢复<br>';
}
}
----------------------------------------------------
//设置分页样式
class ListStyle
{
//备忘对象
private $memento;
//构造方法
public function __construct()
{
$this->memento = new Memento();
}
//设置样式
public function setStyle()
{
//开始先备份样式
$this->memento->backup();
//设置样式
echo '设置了样式<br>';
}
//撤销方法
public function undo()
{
$this->memento->restore();
}
}
----------------------------------------------------
$listStyle = new ListStyle();
//设置样式,同时备份
$listStyle->setStyle();
//撤销设置
$listStyle->undo();
?>
2、REDO
<?php
//备忘类
class Memento
{
public function backup()
{
//保存现有的分页样式
echo '样式已经保存<br>';
}
public function restore()
{
//用保存的样式去覆盖
echo '样式已经恢复<br>';
}
}
//设置分页样式
class ListStyle
{
//备忘对象
private $memento;
//构造方法
public function __construct()
{
$this->memento = new Memento();
}
//设置样式
public function setStyle()
{
//开始先备份样式
$this->memento->backup();
//设置样式
echo '设置了样式<br>';
}
//撤销方法
public function undo()
{
//先保存,为了redo
$this->memento->backup();
$this->memento->restore();
}
//重做方法
public function redo()
{
$this->memento->restore();
}
}
$listStyle = new ListStyle();
//设置样式,同时备份
$listStyle->setStyle();
//撤销设置
$listStyle->undo();
//重做设置
$listStyle->redo();
?>
简单总结下,就是有相应的一个类,来做backup和restore用的。。。。
这个模式还算比较好理解。。。(*^__^*)
作者: kakashilw 发布时间: 2008-11-07
代码虽然简单,但还是没看出有什么模式来

作者: zhaofei299 发布时间: 2009-09-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28