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

设计模式--状态模式

2016-04-09 00:00 381 查看
摘要: 简单记录状态模式的使用。

状态模式(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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息