+ -
当前位置:首页 → 问答吧 → 【一天一个设计模式】03- 备忘模式

【一天一个设计模式】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用的。。。。

这个模式还算比较好理解。。。(*^__^*)

作者: kakashilw   发布时间: 2008-11-07

代码虽然简单,但还是没看出有什么模式来

作者: zhaofei299   发布时间: 2009-09-14