码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-15 22:52:34      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:java   设计模式   状态模式   

场景:
电梯的运行
  • 维修、正常、自动关门、自动开门、向上运行、向下运行、消防状态
红绿灯
  • 红灯、黄灯、绿灯
企业或政府系统
  • 公文的审批状态
报销单据审批状态
假条审批
网上购物时,订单的状态
  • 下单
  • 已付款
  • 已发货
  • 送货中
  • 已收货
核心
用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题

结构
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. 线程对象各状态之间的切换

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

标签:java   设计模式   状态模式   

原文地址:http://blog.csdn.net/lovesomnus/article/details/45750039

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!