java大话西游_Java设计模式_行为型_备忘录模式_大话西游之月光宝盒
1.至尊小宝
大家都看过大话西游之月光宝盒,月光宝盒可以去到五百年后的五岳山,也可以回到五百年前的五指山。但是,月光宝盒这样的宝物是怎么做到的呢?现在让两千年后的我们来创造它,完成千年前的仙履奇缘。
对于至尊小宝来说,要想回到过去和未来,首先要拥有一个可以记录人生每一天的月光宝盒。当曾经经历过,那么记录过去发生的一切,回到现在也记录当前的每一天,当需要“菠萝菠萝蜜”的时候,那么就时间倒转。
//月光宝盒
public interface MoonlightBox {
}
//至尊小宝
public class ZhiZunBao {
// 生活中某年的某一天
private String state;
// 通过月光宝盒记录当日时间
public MoonlightBox recordTime() {
MoonlightBox box = new MyMoonlightBox(this);
return box;
}
// 回到过去或未来的某一天
public void restoreTime(MoonlightBox box) {
MyMoonlightBox mybox = (MyMoonlightBox) box;
setState(mybox.state);
System.out.println("回到" + mybox.getState());
}
// 现在的某一天
public void setState(String state) {
this.state = state;
}
// 月光宝盒
private class MyMoonlightBox implements MoonlightBox {
// 宝盒中的某一天
private String state;
// 记录至尊宝的人生
public MyMoonlightBox(ZhiZunBao zhiZXB) {
this.state = zhiZXB.state;
}
// 回到过去的某一天
public String getState() {
return state;
}
}
}
2.大话西游
回到大话西游的世界,五百年前孙悟空被观音收服,月光宝盒记录这发生的一切。五百年后孙悟空托世为至尊小宝,经历人世间的悲欢离合,当上天再给一次机会,通过月光宝盒回到过去,力保唐三藏去西天取经,帮助人们摆脱人世间的苦难。
public class DaHuaXiYou {
public static void main(String[] args) {
// 至尊小宝
ZhiZunBao bao = new ZhiZunBao();
// 五百年前被观音收服
bao.setState("五百年前");
// 月光宝盒记录当时发生的一切
MoonlightBox box = (MoonlightBox) bao.recordTime();
// 五百年后至尊宝与白晶晶的故事
bao.setState("五百年后");
// 摆脱世俗回到五百年前保唐僧西天取经
bao.restoreTime(box);
}
}
java大话西游_Java设计模式_行为型_备忘录模式_大话西游之月光宝盒相关推荐
- Java设计模式之行为型:备忘录模式
在开发过程中,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态.比如,在编程时假如编写失误,例如不小心误删除了几行代码,我们希望返回删除前的状态,便可以使用 Ctrl+Z 来进行返回,这时 ...
- 访问者模式的java语言_Java 设计模式系列(二三)访问者模式(Vistor)
Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以 ...
- Java设计模式之行为型:模板方法模式
一.什么是模板方法模式: 模板方法是基于继承实现的,在抽象父类中声明一个模板方法,并在模板方法中定义算法的执行步骤(即算法骨架).在模板方法模式中,可以将子类共性的部分放在父类中实现,而特性的部分延迟 ...
- Java设计模式之创建型:原型模式
一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...
- Java设计模式之行为型:解释器模式
一.什么是解释器模式: 解释器模式,就是定义语言的文法,并建立一个解释器来解释该语言中的句子,通过构建解释器,解决某一频繁发生的特定类型问题实例. 这里我们将语言理解成使用规定格式和语 ...
- Java设计模式之行为型:策略模式
一.背景: 在开发中经常遇到这种情况,实现某个功能有多种算法策略,我们可以根据不同环境或者条件选择不同的算法策略来完成该功能,比如查找.排序等,一种常用方式是硬编码在一个类中,如需要提供多种查找算法, ...
- Java设计模式之行为型:访问者模式
背景: 去医院看病时,医生会给你一个处方单要你去拿药,拿药我们可以分为两步走: (1)去柜台交钱,划价人员会根据处方单上的药进行划价,交钱. (2)去药房拿药,药房工作者同样根据处方单给你相对应的药. ...
- Java设计模式之行为型:状态模式
背景: 介绍状态模式前,我们先看这样一个实例:公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上.下图是他们系统的主要工作: 当第一眼看到这个系统时你就看出这是一个状态图,每个框都代表 ...
- Java设计模式之行为型:命令模式
前言: 在开发中,我们可能需要向某些对象发送一些请求,但我们不知道请求的具体接收者是谁,也不知道被请求的操作是哪个,只知道在系统运行中指定具体的请求接收者即可,打个比方,电视遥控器,我们只需知道按哪个 ...
最新文章
- L1-003. 个位数统计
- 判断均匀平面波的极化形式_化学选修3丨分子极性如何判断?四步就能搞定!...
- 浅谈OCR之Tesseract
- python储存_python数据储存
- k2677场效应管参数引脚_共射极放大电路,场效应管放大电路,运算放大电路
- Linux(Ubuntu/CentOS)安装splunkforwarder步骤
- ffmpeg和opencv 播放视频文件和显示器
- CorelDRAWX4的VBA插件开发(二十六)深度转曲之包含容器内文字转曲
- 用python输出杨辉三角形,python输出杨辉三角
- 咸鱼ZTMR实例—PS2手柄控制板载LED
- Android录屏解决方案调研
- PHP8.0尝鲜系列(一):Windows 10安装PHP8.0
- 过QQ游戏大厅的SX保护 - Evil0r's Blog - 博客频道 - CSDN_NET
- R.Koo 改良后的分页类(主要是显示属性)
- SpringDataJPA学习笔记
- STM32469iDiscovery + LVGL 窗帘现象
- 2022年执法资格通用法律知识考试判断题专项训练题及答案
- 我和小米的10年,从米粉到米黑,再到米粉的故事...
- mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...
- Oracle数据库的空间管理技巧