輕松掌握J(rèn)ava備忘錄模式
定義:保存一個對象的某個狀態(tài),以便在適當(dāng)?shù)臅r候恢復(fù)對象
特點:
1、給用戶提供了一種可以恢復(fù)狀態(tài)的機(jī)制,可以使用戶能夠比較方便地回到某個歷史的狀態(tài)。
2、實現(xiàn)了信息的封裝,使得用戶不需要關(guān)心狀態(tài)的保存細(xì)節(jié)。
企業(yè)級應(yīng)用和常用框架中的應(yīng)用:常見文本編輯器使用了該模式
實例:
注意:該實例中只有撤銷操作,沒有向前還原操作
/** * 目標(biāo)對象:將要被備忘的對象 */ class Word { private String content; private String image; private String table; public Word(String content, String image, String table) { super(); this.content = content; this.image = image; this.table = table; } public WordMemento memento(){ return new WordMemento(this); } public void recovery(WordMemento memento){ this.content = memento.getContent(); this.image = memento.getImage(); this.table = memento.getTable(); } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } public String getTable() { return table; } public void setTable(String table) { this.table = table; } } /** * 備忘錄對象 */ class WordMemento{ private String content; private String image; private String table; public WordMemento(Word word) { this.content = word.getContent(); this.image = word.getImage(); this.table = word.getTable(); } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } public String getTable() { return table; } public void setTable(String table) { this.table = table; } } /** * 負(fù)責(zé)人對象:負(fù)責(zé)記錄備忘錄對象 */ class CareTaker{ private List<WordMemento> list = new ArrayList<>(); private int index = 0; public void setMemento(WordMemento memento){ list.add(memento); this.index = list.size(); } public WordMemento getWordMemento(){ if(index == 0){ System.out.println("沒有可還原的內(nèi)容"); return null; } WordMemento memento = list.get(index-1); list.remove(index-1); index--; return memento; } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于springboot的接口返回值統(tǒng)一標(biāo)準(zhǔn)格式
這篇文章主要介紹了關(guān)于springboot的接口返回值統(tǒng)一標(biāo)準(zhǔn)格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05Java Spring Boot實戰(zhàn)練習(xí)之單元測試篇
單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據(jù)實際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等2021-10-10Java線程池隊列PriorityBlockingQueue原理分析
這篇文章主要介紹了Java線程池隊列PriorityBlockingQueue原理分析,PriorityBlockingQueue隊列是?JDK1.5?的時候出來的一個阻塞隊列,但是該隊列入隊的時候是不會阻塞的,永遠(yuǎn)會加到隊尾,需要的朋友可以參考下2023-12-12spring boot+mybatis搭建一個后端restfull服務(wù)的實例詳解
這篇文章主要介紹了spring boot+mybatis搭建一個后端restfull服務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11詳解SpringBoot是如何整合SpringDataRedis的?
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著SpringBoot是如何整合SpringDataRedis展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06