注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【原】 PHP 设计模式十八之备忘录设计模式  

2011-06-22 18:06:53|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

<?php
/**
 * 存档   备忘录设计模式
 * 定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
 * @anthor Chen Wei Han <csq-3@163.com>
 * @copyright Chen Wei Han 2011-6-22下午04:45:54
 * @link http://csq-3.blog.163.com
 * @package demo
 * @version 1.0
 */

/**
 * Originator角色对象
 */
 class Originator
 {
  private $state;
  
  public function __construct()
  {
   $this->state=100;
  }
  
  public function getstate()
  {
   return $this->state;
  }
  
    public function setstate($state)
  {
   $this->state=$state;
  }
  
  /**
   * 创建备忘录存储
   */
    public function createMemento()
    {
        return new Memento($this->state);
    }

    /**
     * 恢复到备忘录对象所记载的状态
     */
    public function restoreMemento($memento)
    {
        $this->state = $memento->getState();
    }
  
 }

 /**
  * Memento角色对象备忘存储类
  */
class Memento {
   
 private $state;

    public function __construct($value)
    {
         $this->state=$value;
    }
   
    public function getstate()
    {
      return  $this->state;
    }
   
    public function setstate($value)
    {
     $this->state = $value;
    }
}

/**
 * Caretaker角色对象
 */
class Caretaker {
   
 private $memento;
   
    /**
     * 备忘录的取值方法
     */
    public function retrieveMemento()
    {
        return $this->memento;
    }

    /**
     * 备忘录的保存方法
     */
    public function saveMemento($memento)
    {
        $this->memento = $memento;
    }
}

$originator = new Originator();
$caretaker  = new Caretaker();

//保存初始状态
$caretaker->saveMemento($originator->createMemento());

echo $originator->getstate()."<br>";

//改变状态
$originator->setstate(60);

echo $originator->getstate()."<br>";

//恢复状态
$originator->restoreMemento($caretaker->retrieveMemento());

echo $originator->getstate()."<br>";


 

  评论这张
 
阅读(150)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018