Java笔记-Java中备忘录模式
首先設(shè)計模式代表外招功法,是外招的模板,個人覺得他是為面向?qū)ο?個原則而準(zhǔn)備的:
面向?qū)ο蟪绦蛟O(shè)計要考慮7個原則:
單一職責(zé)原則:設(shè)計目的單一的類;
開放封閉原則:對擴(kuò)展開發(fā),對修改封閉;
李氏替換原則:子類可以替換父類;
依賴倒置原則:要依賴于抽象,不依賴于具體,面向接口的編程;
接口隔離原則:使用多個專用的接口比使用單一的接口要好;
組合重用原則:盡可能使用組合,而非繼承;
迪米特原則:一個對象盡可能少的了解其他對象。
通過這7個原則,創(chuàng)建起來的設(shè)計模式。
橋接模式的基本的概念參照C++設(shè)計模式的博文:
https://blog.csdn.net/qq78442761/article/details/96147238
在這里我舉個Java的例子,用Java來實現(xiàn)下備忘錄模式。
備忘錄模式適合模擬游戲存檔的功能,在此使用Java模擬下游戲存檔:
UML圖如下:
?
這里簡單解釋下,Game可以輸出SaveFile這個存檔,有一個控制類叫Controller可以保存這個存儲為List,從而可以對保存的進(jìn)行進(jìn)度進(jìn)行回滾。
比如一個戰(zhàn)士在100級和101級,和102級都有存檔,現(xiàn)在打Boss死了,會自動退到他的101級存檔重新開始:
結(jié)構(gòu)如下:
?源碼如下:
Controller.java
package cn.it1995;import java.util.ArrayList; import java.util.List;public class Controller {private List<SaveFile> saveFileList = new ArrayList<SaveFile>();public void add(SaveFile saveFile){saveFileList.add(saveFile);}public SaveFile get(Integer index){return saveFileList.get(index);} }Game.Java
package cn.it1995;public class Game {private String status;public void setStatus(String status){this.status = status;}public String getStatus(){return this.status;}public SaveFile saveStatusToFile(){return new SaveFile(status);}public void setStatusFromFile(SaveFile saveFile){status = saveFile.getFileContent();} }SaveFile.java
package cn.it1995;public class SaveFile {private String fileContent;public SaveFile(String fileContent){this.fileContent = fileContent;}public String getFileContent() {return fileContent;} }Main.Java
package cn.it1995;public class Main {public static void main(String[] args) {Game game = new Game();Controller controller = new Controller();game.setStatus("{'name':'warrior', 'level':100}");controller.add(game.saveStatusToFile());game.setStatus("{'name':'warrior', 'level':101}");controller.add(game.saveStatusToFile());game.setStatus("{'name':'warrior', 'level':102}");controller.add(game.saveStatusToFile());//回退到戰(zhàn)士的第一個存單game.setStatusFromFile(controller.get(0));System.out.println(game.getStatus());} }運(yùn)行截圖:
?Controller中的值:
?
源碼打包下載地址:
https://github.com/fengfanchen/Java/tree/master/JavaMementoPattern
總結(jié)
以上是生活随笔為你收集整理的Java笔记-Java中备忘录模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-读取资源文件应该注意的问题
- 下一篇: Spring Shell笔记-help方