php备忘录程序源码,php备忘录模式

本文详细介绍了备忘录模式的实现,通过Edit类展示如何保存和恢复编辑状态,Caretaker类作为状态管理器,以及Memento类用于存储状态。实例演示了如何通过修改操作和内容,并在不同状态下进行切换。
摘要由CSDN通过智能技术生成

/**

* 备忘录模式

* http://blog.csdn.net/CleverCode

*

*/

//编辑器

class Edit

{/*{{{*/

public $act;

public $content;

//保存状态

public function saveState(Caretaker $caretaker)

{

return $caretaker->add(new Memento($this->act,$this->content));

}

//恢复状态

public function recoveryState(Memento $memento)

{

$this->act = $memento->act;

$this->content = $memento->content;

}

public function modify($act,$content)

{

$this->act = $act;

$this->content = $content;

}

public function show()

{

echo "操作:".$this->act."\r\n";

echo "内容:".$this->content."\r\n";

}

}/*}}}*/

//编辑状态存储箱

class Memento

{/*{{{*/

public $act;

public $content;

public function __construct($act,$content)

{

$this->act = $act;

$this->content = $content;

}

}/*}}}*/

//管理类

class Caretaker

{/*{{{*/

public $data = array();

public function add(Memento $memento)

{

$this->data[] = $memento;

}

//获取上一个

public function getLast()

{

$len = count($this->data);

if($len < 1)

{

return;

}

return $this->data[$len - 1];

}

}/*}}}*/

class Client

{/*{{{*/

public static function main($argv)

{

$edit = new Edit();

$caretaker = new Caretaker();

$edit->modify('插入abc','abc');

$edit->saveState($caretaker);

$edit->modify('插入d','abcd');

$edit->saveState($caretaker);

$edit->modify('删除c','abd');

$edit->saveState($caretaker);

$edit->modify('插入e','abde');

//恢复上一个状态

$edit->recoveryState($caretaker->getLast());

$edit->show();

}

}/*}}}*/

Client::main($argv);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值