– 电梯的运行
• 维修、正常、自动关门、自动开门、向上运行、向下运行、消防状态
– 红绿灯
• 红灯、黄灯、绿灯
– 企业或系统
• 公文的审批状态
– 报销单据审批状态
– 假条审批
– 网上购物时,订单的状态
• 下单 • 已付款 • 已发货 • 送货中 • 已收货
– 酒店系统中,房间的状态变化:
• 已预订 • 已入住 • 空闲
if(state==" 空闲"){
if( 预订房间){
预定操作;
state=" 已预订";
}else if( 住进房间){
入住操作;
state=" 已入住";
}
}else if(“ 已预订"){
if( 住进房间){
入住操作;
state=" 已入住";
}else if( 取消预订){
取消操作;
state=" 空闲";
}
}
当遇到这种需要频繁的修改状态时,考虑状态模式
– 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题
– Context环境类
• 环境类中维护一个State对象,他是定义了当前的状态。
– State抽象状态类
– ConcreteState具体状态类
• 每一个类封装了一个状态对应的行为
– 银行系统中账号状态的管理
– OA系统中公文状态的管理
– 酒店系统中,房间状态的管理
– 线程对象各状态之间的切换
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务