備忘錄模式(Memento Pattern):在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣就可以將該對(duì)象恢復(fù)到原先保存的狀態(tài)
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、松嶺網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為松嶺等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。Originator(發(fā)起者):記錄當(dāng)前的狀態(tài),負(fù)責(zé)創(chuàng)建和恢復(fù)備忘錄
Memento(備忘錄):負(fù)責(zé)存儲(chǔ)發(fā)起者的狀態(tài),在需要的時(shí)候提供發(fā)起人需要的狀態(tài)
Caretaker(管理者):管理備忘錄
(這里我們以單角色、單狀態(tài)、單備份來演示,思想是相同的,無非是存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)上的區(qū)別)
備忘錄角色,定義了存儲(chǔ)狀態(tài)的變量,可以根據(jù)實(shí)際需求定義對(duì)應(yīng)的存儲(chǔ)對(duì)象
public class Memento { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; }}
發(fā)起者角色,存儲(chǔ)狀態(tài),并且可以創(chuàng)建備忘錄和將狀態(tài)恢復(fù)為備忘錄的值
public class Originator { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento() { Memento memento = new Memento(); memento.setState(state); return memento; } public void restoreMemento(Memento memento) { this.state = memento.getState(); }}
管理者角色,管理了備忘錄
public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; }}
測(cè)試類
public class Client { @Test public void test() { //設(shè)置初始狀態(tài) Originator originator = new Originator(); originator.setState("狀態(tài)1"); System.out.println("初始狀態(tài):" + originator.getState()); //創(chuàng)建管理者 Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.createMemento()); //更新狀態(tài) originator.setState("狀態(tài)2"); System.out.println("跟新狀態(tài):" + originator.getState()); //恢復(fù)狀態(tài) originator.restoreMemento(caretaker.getMemento()); System.out.println("恢復(fù)狀態(tài):" + originator.getState()); }}
運(yùn)行結(jié)果
初始狀態(tài):狀態(tài)1跟新狀態(tài):狀態(tài)2恢復(fù)狀態(tài):狀態(tài)1
優(yōu)點(diǎn):
缺點(diǎn):
應(yīng)用場(chǎng)景: