java设计模式进阶_memento
来源:互联网 发布:php开源站群管理系统 编辑:程序博客网 时间:2024/05/21 19:46
////// Generated by StarUML(tm) Java Add-In//// @ Project : Untitled// @ File Name : StarMemento.java// @ Date : 2016/8/30// @ Author : ////public interface StarMemento {}////// Generated by StarUML(tm) Java Add-In//// @ Project : Untitled// @ File Name : StarMementoInternal.java// @ Date : 2016/8/30// @ Author : ////public class StarMementoInternal implements StarMemento { private StarType type; private int ageYears; private int massTons; public StarType getType() { return type; } public void setType(StarType type) { this.type = type; } public int getAgeYears() { return ageYears; } public void setAgeYears(int year) { this.ageYears = year; } public int getMassTons() { return massTons; } public void setMassTons(int massTons) { this.massTons = massTons; }}////// Generated by StarUML(tm) Java Add-In//// @ Project : Untitled// @ File Name : Star.java// @ Date : 2016/8/30// @ Author : ////public class Star { private StarType type; private int ageYears; private int massTons; public Star(StarType type, int startAge, int startMass) { this.type = type; this.ageYears = startAge; this.massTons = startMass; } public void timePasses() { ageYears *= 2; massTons *= 8; switch(type) { case RED_GIANT: type = StarType.WHITE_DWARF; break; case SUN: type = StarType.RED_GIANT; break; case SUPERNOVA: type = StarType.DEAD; break; case WHITE_DWARF: type = StarType.SUPERNOVA; break; case DEAD: ageYears *= 2; massTons = 0; break; default: break; } } public StarMemento getMemento() { StarMementoInternal state = new StarMementoInternal(); state.setAgeYears(ageYears); state.setMassTons(massTons); state.setType(type); return state; } public void setMemento(StarMemento memento) { StarMementoInternal state = (StarMementoInternal)memento; this.type = state.getType(); this.ageYears = state.getAgeYears(); this.massTons = state.getMassTons(); } public String toString() { return String.format("%s age: %d years mass: %d tons", type.toString(),ageYears,massTons); }}public enum StarType { SUN("sun"),//太阳 RED_GIANT("red giant"),//巨人 WHITE_DWARF("white dwarf"),//白色-矮人 SUPERNOVA("supernova"),//超新星 DEAD("dead star"),//废星 UNDEFINED("")//未命名 ; private String title; StarType(String title){ this.title = title; } public String toString() { return title; }}import java.util.Stack;public class App { public static void main(String[] args) { Stack<StarMemento> states = new Stack<>(); Star star = new Star(StarType.SUN,10000000,500000); System.out.println(star); states.add(star.getMemento()); star.timePasses(); System.out.println(star); states.add(star.getMemento()); star.timePasses(); System.out.println(star); states.add(star.getMemento()); star.timePasses(); System.out.println(star); states.add(star.getMemento()); star.timePasses(); System.out.println(star); while(states.size() > 0) { star.setMemento(states.pop()); System.out.println(star); } }}/*sun age: 10000000 years mass: 500000 tonsred giant age: 20000000 years mass: 4000000 tonswhite dwarf age: 40000000 years mass: 32000000 tonssupernova age: 80000000 years mass: 256000000 tonsdead star age: 160000000 years mass: 2048000000 tonssupernova age: 80000000 years mass: 256000000 tonswhite dwarf age: 40000000 years mass: 32000000 tonsred giant age: 20000000 years mass: 4000000 tonssun age: 10000000 years mass: 500000 tons*/
0 0
- java设计模式进阶_memento
- 设计模式——备忘录模式_Memento Pattern
- Java进阶-设计模式
- java设计模式进阶_singleton
- java设计模式进阶_prototype
- java设计模式进阶_builder
- java设计模式进阶_decorator
- java设计模式进阶_strategy
- java设计模式进阶_visitor
- java设计模式进阶_flyweight
- java设计模式进阶_proxy
- java设计模式进阶_facade
- java设计模式进阶_composite
- java设计模式进阶_bridge
- java设计模式进阶_adapter
- java设计模式进阶_interpreter
- java设计模式进阶_mediator
- java设计模式进阶_chain
- 面试题 最长回文子串
- kie-server java client json for drools6.4
- Makefile选项CFLAGS,LDFLAGS,LIBS
- ASP.NET网络编程中经常用到的27个函数集
- android中点击输入框时整个布局被上移的解决办法
- java设计模式进阶_memento
- websocket协议
- 科目二科目三中关于离合器的技巧集合
- Android项目持续集成之单元测试及代码覆盖率
- View requires API level 14 (current min is 9): <GridLayout>
- Search in Rotated Sorted Array
- 数位dp windy数
- Android Zxing 二维码扫码性能优化
- iOS滚珠菜单动效