2017-09-26
Memento パターン
デザインパターンちゃんと勉強をしようと思ったので結城さんの本を 1 つ 1 つ実装してみる。 前回の Observerからの続き。
オブジェクトを以前の状態に(ロールバックにより)戻す能力を提供する。
クラス図
メメントといえばクリストファーノーランですが、それは置いておいて。
自分としての理解・疑問
- 一時的な情報の保存をクラスを使って実現しようとする形
- キャッシュなどを使う Flyweight とかとも近いかも。
- ここら辺は考え方という感じがして驚きがない。
<?php
/**
* Memento作成
*
* @access public
* @param void
* @return void
*/
public function createMemento()
{
$m = new \Memento\Memento($this->money);
// Mementoオブジェクトにフルーツを保存する
foreach ($this->fruits as $f) {
if ((strpos($f, 'おいしい') === 0)) {
$m->addFruit($f);
}
}
return $m;
}