您的位置:首页 > 其它

实战设计模式之状态模式

2013-11-24 20:33 218 查看
只做代码分析,不做语义解析(高级程序员都从代码和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{

@Override
public void cry() {
//happy
}

@Override
public void say() {
//hou mummy

}

@Override
public void smile() {
//:)

}

}
MMUnHappyState.java

public class MMUnHappyState extends MMState{

@Override
public void cry() {
//unhappy
}

@Override
public void say() {
//hou papa

}

@Override
public 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: