メモ パターンは動作パターンです。動作パターンとは何ですか? つまり、動作パターンは、オブジェクトやクラスのパターンを記述するだけでなく、通信も記述します。それらの間のメソッドを使用すると、実行時に追跡するのが難しい複雑な制御フローが削除され、制御フローからオブジェクト間の関係に注意が移ります。動作クラス パターンは、継承メカニズムを使用してクラス間で動作をディスパッチします
概要: カプセル化を破壊せずに、オブジェクトの内部状態をキャプチャし、この状態をオブジェクトの外部に保存します。これにより、オブジェクトを元の保存された状態に復元できます
個人用例:
1 閲覧用ブックマーク
2 メッセージボックス
/**
* 役割の開始
* メモの役割
* メモの役割の管理
*/
namespace haibaodesignwebviewdesign;
use haibaodesignwebcommondesignmementoOriginator;
use haibaodesign webcommondesignmementoCaretaker ;
クラス Memento は、haibaodesignwebviewBase を拡張します{
保護関数 preRender(){
header("Content-type: text/html; charset=utf-8");
$originator = new Originator();
$ Originator->state = "オン";
$originator->show();
$caretaker = new Caretaker();
$caretaker->setMemento($originator->createMemento());
$originator->gt; state = "オフ";
$originator->show();
$originator->setMemento($caretaker->getMemento());
$originator->show();
}
}
/**
* 管理の役割
*/
namespace haibaodesignwebcommondesignmemento;
class Caretaker{
private $memento;
public function setMemento( $memento ){
$これ- >memento = $memento ;
}
public function getMemento(){
return $this->memento;
}
}
/ **
* メモ文字
*/
namespacehaibaodesignwebcommondesignmemento;return $this->state;
}
}
/**
* スポンサーの役割
*/
namespace haibaodesignwebcommondesignmemento;
class Originator{
public $state;
公開function createMemento(){
return new Mementor($this->state);
}
public function setMemento(Mementor $memento){
$this->state = $ memento->getState() ;
}
public function show(){
echo "
State=".$this->state;
}
}