状态模式(state):
当对象的状态改变时,同时改变其行为。
QQ状态模式的特点:
1. 可以通过改变状态获得不同的行为。
2. 你的好友能同时看到你的变化。
示例:
状态模式测试类StateTest.java
/**
* 状态模式测试类
*
* @author Kevin
* @date 2016-3-16
*/
public class StateTest {
public static void main(String[] args) {
State state = new State();
QQContext qqContext = new QQContext(state);
/* 上线 */
state.setValue("online");
qqContext.switchStatus();
/* 下线 */
state.setValue("offline");
qqContext.switchStatus();
}
}
QQ状态模式的切换类QQContext.java
/**
* QQ状态模式的切换类
*
* @author Kevin
* @date 2016-3-16
*/
public class QQContext {
/* 上线状态 */
private static final String ONLINE = "online";
/* 离线状态 */
private static final String OFFLINE = "offline";
/* 状态 */
private State state;
public QQContext(State state) {
this.state = state;
}
/**
* 切换状态
*
* @author Kevin
*/
public void switchStatus() {
String stateValue = state.getValue();
if (ONLINE.equals(stateValue)) {
state.online();
} else if(OFFLINE.equals(stateValue)) {
state.offline();
}
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
状态类State.java
/**
* 状态类
*
* @author Kevin
* @date 2016-3-16
*/
public class State {
/* 状态值 */
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
/**
* 上线
*
* @author Kevin
*/
public void online() {
System.out.println("execute online operation");
}
/**
* 离线
*
* @author Kevin
*/
public void offline() {
System.out.println("execute offline operation");
}
}
来源:oschina
链接:https://my.oschina.net/u/2619918/blog/655739