设计模式之状态模式

状态模式

public class Context{
	// 环境类
	private State state;	// 当前环境的状态
	public void serState(State state){
		this.state = state;	// 设置环境的当前状态
	}
	public void getState(){
		return this.state;	// 获取环境的当前状态
	}
	public handler(){
		state.handler(this);	// 状态自动变化,环境会改变自身状态到下一个状态
	}
}
public interface State{
	void handler(Context context);
}
public class ConcerteStateA implements State{
	@Override
	public void handler(Context context){
		System.out.println("当前状态是A");
		context.handler(new ConcerteStateB());	// 状态A执行完后状态改为状态B
	}
}
public class ConcerteStateB implements State{
	@Override
	public void handler(Context context){
		System.out.println("当前状态是B");
		context.handler(new ConcerteStateA());	// 状态B执行完后状态改为A
	}
}
public class Client{
	public static void main(String[] args){
		Context context = new Context();
		context.setState(new ConcerteStateB);	// 设置当前状态
		context.handler();	// 状态B执行,然后将环境的状态置为A
		context.handler();	// 状态A执行,然后将环境的状态置为B
	}
}

状态模式的精髓在于,状态可以按内置顺序可以自动变化,不用每次都手动指定。当有新的状态要添加时,只需要修改新状态的上级状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值