状态模式
来源:互联网 发布:vb调用大漠插件 编辑:程序博客网 时间:2024/05/16 11:54
1.状态模式的定义
允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类
2.状态模式的UML图
3.代码实现
public interface State{ public void handle(String param);}public class ConreteStateA implements State{ public void handle(String param){ System.out.println(param)); }}public class ConreteStateB implements State{ public void handle(String param){ System.out.println(param)); }}public class Context{ private State state; public void setState(State state){ this.state=state; } public State getState(){ return this.state; } public void request(String param{ this.state.handle(param); } }public class Client{ public static void main(String[] args){ int i=0; State state=null if(i==0){ state=new ConreteStateA (); }else if(i==1){ state=new ConreteStateB (); } Context context=new Context(); context.setState(state); context.request("11111"); }}
状态模式与策略模式的UML一样,但是两者强调的东西是不一样的。
状态模式强调的是行为的平行性,所谓平行性是指在各个状态的行为所处的层次是一样的,相互是独立的、没有关联的,根据不同的状态来决定到底走平行线的哪一条。行为是不同的,当然对应的实现也是不同的,相互之间是不可替换的。
策略模式强调的是行为的平等性,所谓平等性是指大家是同一行为的不同描述或实现,因此在同一行为发送变化的时候,可以根据条件挑选任何一个实现来进行相应的处理,平等性强调的是可替换性。
平行性如下图
平等性如下图:
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 输入、输出技巧总结,常用位运算
- 应用程序徽章-IOS开发
- 打开键盘遮住View的问题解决方法-IOS开发
- 试用 Entity Framework Power Tools CTP1 [ 不用再为生成实体类发愁了 ]
- 锁定表头和列
- 状态模式
- (转)D3D-Z缓冲
- linux服务管理命令总结
- Enum的一点点理解
- 求子数组之和最大值(包括循环)
- UIKeyboard键盘相关知识点-IOS开发
- 删除VS开发的Office插件
- 文件操作及常用函数整理
- javascript转换.net DateTime方法 (比如转换\/Date(1319878800000+0800)\/)