实战设计模式之状态模式

来源:互联网 发布:cms建站系统 编辑:程序博客网 时间:2024/05/17 09:28

只做代码分析,不做语义解析(高级程序员都从代码和UML理解设计思想)。代码来自尚学堂,UML来自本人手绘:

MMState.java

public abstract class MMState {public abstract void smile();public abstract void cry();public abstract void say();}

MMHappyState.java

public class MMHappyState extends MMState{@Overridepublic void cry() {//happy}@Overridepublic void say() {//hou mummy}@Overridepublic void smile() {//:)}}
MMUnHappyState.java

public class MMUnHappyState extends MMState{@Overridepublic void cry() {//unhappy}@Overridepublic void say() {//hou papa}@Overridepublic void smile() {//:(}}

MM.java

public class MM {private String name;private MMState state = new MMHappyState();public MM(MMState state){this state = state;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void smile() {state.smile();}public void cry() {state.cry();}public void say() {state.say();}}

Boy.java

public class Boy {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void pursue(MM mm) {}public void doSomeThing() {MMState state = new MMHappyState();MM mm = new MM(state);mm.smile();mm.cry();mm.say();}}

UML图:



状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类

更多内容请查看我的其他blog:http://blog.csdn.net/caicongyang

原创粉丝点击