JAVA设计模式(18):行为型-状态模式(State)

时间:2015-05-15 22:52:34   收藏:0   阅读:220
场景:
电梯的运行
红绿灯
企业或政府系统
报销单据审批状态
假条审批
网上购物时,订单的状态
核心
用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题

结构
Context环境类
  • 环境类中维护一个State对象,它是定义了当前的状态
State抽象状态类

ConcreteState具体状态类
  • 每一个类封装了一个状态对应的行为
public class Context {
	private State state;

	public void setState(State state) {
		System.out.println("修改状态");
		this.state = state;
		this.state.handle();
	}

}

public interface State {
	void handle();
}

public class BookState implements State{

	@Override
	public void handle() {
		// TODO Auto-generated method stub
		System.out.println("房间已预订");
	}

}

public class CheckedState implements State{

	@Override
	public void handle() {
		// TODO Auto-generated method stub
		System.out.println("房间已入住");
	}

}

public class FreeState implements State{

	@Override
	public void handle() {
		// TODO Auto-generated method stub
		System.out.println("房间空闲,没人住");
	}

}


开发中常见的场景
  1. 银行系统中账号状态的管理
  2. OA系统中公文状态的管理
  3. 酒店系统中房间状态的管理
  4. 线程对象各状态之间的切换

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!