设计模式_状态模式(Java)
来源:互联网 发布:mac 设置用户头像 编辑:程序博客网 时间:2024/05/22 06:51
状态模式(State),当一个对象的内在状态改变时允许改变其行为。这个对象看上去就像是改变了它的类一样。
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。
状态模式的好处:将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。将特定的状态相关的行为都放到一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换。
状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。
当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。
类图:
举一个灯泡开关的例子,列出示例代码:
//package com.dlut.designpattern.state;public class Lightbulb { public State state=null; public void setState(State s){ this.state=s; } public void showState(){ state.show(); } public void switchState(){ if(OnState.class.isInstance(state)){ this.state=new OffState(); }else if(OffState.class.isInstance(state)){ this.state=new OnState(); } }}abstract class State{ public abstract void show();}class OnState extends State{ @Override public void show() { System.out.println("灯泡状态:开启..."); }}class OffState extends State{ @Override public void show() { System.out.println("灯泡状态:关闭..."); }}
测试类:
//package com.dlut.designpattern.state;public class Test { public static void main(String[] args) { Lightbulb lightbulb=new Lightbulb(); lightbulb.setState(new OnState()); lightbulb.showState(); lightbulb.switchState(); lightbulb.showState(); }}
执行结果:
灯泡状态:开启…
灯泡状态:关闭…
状态模式也是比较好理解的设计模式。当行为随着状态改变时,我们就可以愉快地使用状态模式来提升逼格了。^_^
参考:
- 《大话设计模式》
- http://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html
0 0
- java设计模式_状态模式
- 设计模式_状态模式(Java)
- Java设计模式_(行为型)_状态模式
- 设计模式_状态模式
- 设计模式_状态模式
- 设计模式_状态模式
- 设计模式_状态模式
- 设计模式_状态模式
- 设计模式_状态模式
- 设计模式_状态设计模式
- Unity_设计模式_状态模式_05
- 设计模式_状态模式(23)
- Java设计模式_行为型_状态模式_工作还是休息
- Java设计模式_创建型_原型模式_复制对象及状态
- java设计模式-状态模式
- java设计模式---状态模式
- java设计模式---状态模式
- java设计模式---状态模式
- Navicat连接Sqlserver报错08001
- 设计模式之备忘录模式(Memento)
- FreeRTOSv9.0.0版本WIN32-MSVC工程使用VisualStudio2012编译报错解决
- HDU 4002 Find the maximum(C++大整数实现+打表)
- 动态规划之背包问题之逻辑(无代码)
- 设计模式_状态模式(Java)
- P问题、NP问题和NPC问题
- 《NSURLSession-简介》
- Path路径查找
- 服务器跳转
- LeetCode 237: Delete Node in a Linked List
- Android Error Conversion to Dalvik format failed with error 1
- windows下修改jupyter notebook工作路径的简单方法
- Linux mount windows共享目录