java state用法_Java 实现状态(State)模式

/**

* @author stone

*/

public class WindowState {

private String stateValue;

public WindowState(String stateValue) {

this.stateValue = stateValue;

}

public String getStateValue() {

return stateValue;

}

public void setStateValue(String stateValue) {

this.stateValue = stateValue;

}

public void handle() {

/*

* 依据不同状态做不同操作, 再切换状态

*/

if ("窗体".equals(stateValue)) {

switchWindow();

this.stateValue = "全屏";

} else if ("全屏".equals(stateValue)) {

switchFullscreen();

this.stateValue = "窗体";

}

}

private void switchWindow() {

System.out.println("切换为窗体状态");

}

private void switchFullscreen() {

System.out.println("切换为全屏状态");

}

}

/**

* 状态的使用

* @author stone

*

*/

public class WindowContext {

private WindowState state;

public WindowContext(WindowState state) {

this.state = state;

}

public WindowState getState() {

return state;

}

public void setState(WindowState state) {

this.state = state;

}

public void switchState() {

this.state.handle();

}

}

/*

* 状态(State)模式 行为型模式

* 既改变对象的状态,又改变对象的行为

* 依据状态,改变行为

*/

public class Test {

public static void main(String[] args) {

/*

* 本例的 状态值仅仅有两个,由状态类自身控制

* 也能够把状态值的控制,交由client来设置

*/

WindowContext context = new WindowContext(new WindowState("窗体"));

context.switchState();

context.switchState();

context.switchState();

context.switchState();

}

}

打印

切换为窗体状态

切换为全屏状态

切换为窗体状态

切换为全屏状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值