国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

(十三)備忘錄模式

2019-11-08 03:15:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

備忘錄對(duì)象是一個(gè)用來(lái)存儲(chǔ)另外一個(gè)對(duì)象內(nèi)部狀態(tài)的快照的對(duì)象。備忘錄模式的用意是在不破壞封裝的條件下,將一個(gè)對(duì)象的狀態(tài)捕捉(Capture)住,并外部化,存儲(chǔ)起來(lái),從而可以在將來(lái)合適的時(shí)候把這個(gè)對(duì)象還原到存儲(chǔ)起來(lái)的狀態(tài)。備忘錄模式常常與命令模式和迭代子模式一同使用。

這里寫圖片描述

備忘錄模式所涉及的角色有三個(gè):備忘錄(Memento)角色、發(fā)起人(Originator)角色、負(fù)責(zé)人(Caretaker)角色。

發(fā)起人角色類,發(fā)起人角色利用一個(gè)新創(chuàng)建的備忘錄對(duì)象將自己的內(nèi)部狀態(tài)存儲(chǔ)起來(lái)。

public class Originator { PRivate String state; /** * 工廠方法,返回一個(gè)新的備忘錄對(duì)象 */ public Memento createMemento(){ return new Memento(state); } /** * 將發(fā)起人恢復(fù)到備忘錄對(duì)象所記載的狀態(tài) */ public void restoreMemento(Memento memento){ this.state = memento.getState(); } public String getState() { return state; } public void setState(String state) { this.state = state; System.out.println("當(dāng)前狀態(tài):" + this.state); }}

備忘錄角色類,備忘錄對(duì)象將發(fā)起人對(duì)象傳入的狀態(tài)存儲(chǔ)起來(lái)。

public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; }}

負(fù)責(zé)人角色類,負(fù)責(zé)人角色負(fù)責(zé)保存?zhèn)渫泴?duì)象,但是從不修改(甚至不查看)備忘錄對(duì)象的內(nèi)容。

public class Caretaker { private Memento memento; /** * 備忘錄的取值方法 */ public Memento retrieveMemento(){ return this.memento; } /** * 備忘錄的賦值方法 */ public void saveMemento(Memento memento){ this.memento = memento; }}

客戶端角色類

public class Client { public static void main(String[] args) { Originator o = new Originator(); Caretaker c = new Caretaker(); //改變負(fù)責(zé)人對(duì)象的狀態(tài) o.setState("On"); //創(chuàng)建備忘錄對(duì)象,并將發(fā)起人對(duì)象的狀態(tài)儲(chǔ)存起來(lái) c.saveMemento(o.createMemento()); //修改發(fā)起人的狀態(tài) o.setState("Off"); //恢復(fù)發(fā)起人對(duì)象的狀態(tài) o.restoreMemento(c.retrieveMemento()); System.out.println(o.getState()); }}

這里寫圖片描述


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特右旗| 会东县| 铁岭市| 辉县市| 大埔区| 前郭尔| 兴国县| 界首市| 新巴尔虎左旗| 化隆| 阿合奇县| 静宁县| 镇平县| 云梦县| 灵台县| 昌江| 曲阳县| 逊克县| 青河县| 田林县| 江津市| 淮阳县| 依安县| 东明县| 阜新| 无棣县| 库尔勒市| 蓬莱市| 两当县| 罗甸县| 牡丹江市| 鄄城县| 武义县| 伊川县| 邹平县| 石河子市| 恩平市| 丰台区| 贡山| 新兴县| 眉山市|