php實現設計模式之 備忘錄模式

2022-02-15 15:50:19 字數 883 閱讀 4323

<?php 

/*備忘錄模式:在不破壞封裝的前提下,獲取物件的內部狀態,並且在物件外儲存該狀態。這樣就可以將該物件恢復到儲存之前的狀態(行為模式)

* * 發起人:記錄當前時刻的內部狀態,負責定義哪些屬於備份範圍的狀態,負責建立和恢復備忘錄資料。

* 備忘錄:負責儲存發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。

* 管理角色:對備忘錄進行管理,儲存和提供備忘錄。

*///發起人,它有需求需要將自身狀態儲存起來,自身包含備忘與恢復操作

class origin

public function show()

public function setmemento()

public function restore(memento $memento)

}class memento

public function getstate()

}class caretaker

public function setmemento($memento)

}$org = new origin();

$org->setstate('open');

$org->show();

$memento = $org->setmemento();//發起人要將狀態儲存,生成備忘錄

$persion = new caretaker();

$persion->setmemento($memento);

$org->setstate('close');

$org->show();

$org->restore($memento);//恢復

$org->show();

?>

uml類圖:

設計模式之備忘錄模式

機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...

設計模式之 備忘錄模式

定義 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣就可以將該物件 恢復到原先儲存的狀態。很好理解,就像我們以前打通關遊戲一樣,打通某個關卡,就會備份一下,不然根本通不了關。備忘錄 負責儲存發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。public c...