Java笔记-Java中备忘录模式
首先设计模式代表外招功法,是外招的模板,个人觉得他是为面向对象7个原则而准备的:
面向对象程序设计要考虑7个原则:
单一职责原则:设计目的单一的类;
开放封闭原则:对扩展开发,对修改封闭;
李氏替换原则:子类可以替换父类;
依赖倒置原则:要依赖于抽象,不依赖于具体,面向接口的编程;
接口隔离原则:使用多个专用的接口比使用单一的接口要好;
组合重用原则:尽可能使用组合,而非继承;
迪米特原则:一个对象尽可能少的了解其他对象。
通过这7个原则,创建起来的设计模式。
桥接模式的基本的概念参照C++设计模式的博文:
https://blog.csdn.net/qq78442761/article/details/96147238
在这里我举个Java的例子,用Java来实现下备忘录模式。
备忘录模式适合模拟游戏存档的功能,在此使用Java模拟下游戏存档:
UML图如下:
这里简单解释下,Game可以输出SaveFile这个存档,有一个控制类叫Controller可以保存这个存储为List,从而可以对保存的进行进度进行回滚。
比如一个战士在100级和101级,和102级都有存档,现在打Boss死了,会自动退到他的101级存档重新开始:
结构如下:
源码如下:
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());//回退到战士的第一个存单game.setStatusFromFile(controller.get(0));System.out.println(game.getStatus());}
}
运行截图:
Controller中的值:
源码打包下载地址:
https://github.com/fengfanchen/Java/tree/master/JavaMementoPattern
Java笔记-Java中备忘录模式相关推荐
- Java多线程编程中Future模式的详解
转载自 https://www.cnblogs.com/winkey4986/p/6203225.html Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker ...
- Java笔记(学习中。。)
Java笔记 eclipse的使用 常用的dos指令 预备知识 基本语法 变量 关于字符型 关于String 进制转换 运算符 流程控制 数组 数组的内存解析: 数组的Arrays工具类 面向对象 对 ...
- 工厂模式 java好处_java中工厂模式的优缺点有哪些
java中工厂模式的优缺点有哪些 发布时间:2020-12-03 15:15:07 来源:亿速云 阅读:79 作者:Leah 这篇文章将为大家详细讲解有关java中工厂模式的优缺点有哪些,文章内容质量 ...
- Java笔记-JNI中Java与C语言解决中文乱码问题
目录 基本概念 演示过程 基本概念 这里我把他总结成4个步骤: 1. 找类,Java的String: 2. 找函数String类的方法,成员函数: 3. 设置要转换的字符和编码: 4. 程序生成编码后 ...
- Java笔记-Java日常笔记-Java核心语言-史上最全Java笔记-Java烂笔头-实时更新(~v~)
阿一的日常Java笔记,实时更新,有什么问题可以留言交流一下,大家一起共同进步!!! 1.Java基础 1.1.基本语法 1.1.1.关键字 定义:被java赋予特殊含义的字符串(单词): 关 ...
- java笔记——Java常用类
目录 目录 Java常用类目标 1.1内部类 1.2成员内部类 1.3静态内部类 1.4匿名内部类 2.Object类 2.1getClass()方法 2.2hasCode() 2.3toString ...
- 【学习笔记】设计模式-备忘录模式(Memento)
文章目录 0 设计模式 1 备忘录模式 2 实现思路 3 需要的类 4 具体实现 4.1 Memento(备忘录) 4.2 Originator(目标对象) 4.3 CareTaker(管理者) 4. ...
- Java笔记——Java多线程~
多线程 内容来自博客~ 理解线程与进程 进程 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程:进程也是程序的一次执行过程,是系统运行程序的基本单位 ...
- Java笔记-Java中桥接模式
最近在研究一个APP,逆向后发现貌似用了桥接模式,特意学习了下Java中的桥接模式. 关于C++的桥接链接如下: https://blog.csdn.net/qq78442761/article/de ...
最新文章
- 网络工程师_想要记录下来的一些题_1
- 对象④for in 循环
- amd核芯显卡控制面板自定义分辨率_玩家 | 独立显卡和核芯显卡哪个更香?
- android域账号认证失败,绕过域账户认证失败锁定次数限制的技巧
- opencv学习笔记2--存取图像元素
- 大数据学习笔记57:Java代码操作HBase
- alwayson高可用组_AlwaysOn可用性组–简化工作的好奇心–第1部分
- 这些数据库领域的大事你知道多少?
- 萤石云 UIKit Javascript 使用
- 32位CPU最多支持4G内存是怎么算出来的?(解惑篇)
- (总结1)多机器人系统动态任务分配
- 字符图片分割研究小结(搬运、整理、分类、汇总)(自用,持续更新中)
- java中栈的两种实现
- 移动设备管理软件优劣,南京烽火星空来判别
- 学习Docker之Docker初体验 简单用例---SpringBoot集成Docker的部署、发布与应用
- cpp enum enum class
- C语言函数大全-- o 开头的函数
- 研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法
- Python生成素描图
- 八股文之linux中redis常用命令