GOF 23 设计模式之 状态模式
来源:互联网 发布:在职研究生网络教育 编辑:程序博客网 时间:2024/05/29 16:27
场景
- 红绿灯
- 红灯,绿灯,黄灯
- 网上购物时,订单的状态
- 下单
- 已付款
- 已发货
- 送货中
- 已收货
核心
- 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题
结构
- Context环境类
- 环境类中维护一个State对象,他是定义了当前的状态
- State抽象状态类
- ConcreteState具体状态类
- 每一个类封装了一个状态对应的行为
- 每一个类封装了一个状态对应的行为
开发当中常见的场景
- 银行系统中帐号状态的管理
- OA系统中公文状态的管理
- 酒店系统中,房间状态的管理
- 线程对象各状态之间的切换
代码实现
- State
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public interface State { void handle();}
- FreeState
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public class FreeState implements State { @Override public void handle() { System.out.println("房间空闲,没人住"); }}
- BookedState
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public class BookedState implements State { @Override public void handle() { System.out.println("房间已预定,别人不能定"); }}
- CheckedState
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public class CheckedState implements State { @Override public void handle() { System.out.println("房间已入住,请勿打扰"); }}
- Context
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public class Context { private State state; public void setState(State state) { System.out.println("修改状态"); this.state = state; state.handle(); }}
- Client
package com.coderbean.state;/** * Created by Chang on 15/10/5. */public class Client { public static void main(String[] args) { Context context = new Context(); context.setState(new FreeState()); context.setState(new BookedState()); }}
0 0
- GOF 23 设计模式之 状态模式
- GOF设计模式之STATE(状态)
- GOF设计模式-状态模式
- Gof之状态模式
- GOF之状态模式
- Gof 23设计模式
- GOF 23设计模式
- GOF 设计模式之 Command
- GoF设计模式之设计模式
- 非23种GOF设计模式之简单工厂模式
- GOF 23设计模式之 桥接模式
- GOF 23设计模式之 组合模式(composite)
- GOF 23设计模式之 装饰模式(Decorator)
- GOF 23设计模式之 外观模式 迪米特法则
- GOF 23设计模式之 享元模式(FlyWeight)
- GOF 23 设计模式之 观察者模式(Observer)
- GOF 23 设计模式之 备忘录模式(Memento)
- 再读GOF设计模式之原型模式
- 1.Python补充_序列的方法
- ASP.NET页面内传递参数方法
- 删除绿色版MySq
- hdu 5480Conturbatio
- C/C++:用数组构造队列。
- GOF 23 设计模式之 状态模式
- 日经春秋 20151005
- sublime快捷键
- vmware workstation12 pro
- C#(ASP.Net)获取当前路径的方法集合
- Building for UN
- hdu 5481 Desiderium
- Objective-c包装类
- ID生成策略