您的位置:首页 > 编程语言 > Java开发

Java设计模式_行为型_备忘录模式_大话西游之月光宝盒

2015-12-30 14:25 507 查看
转载请注明出处:/article/11557492.html

本文出自:【梁敬明的博客】

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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: