设计模式(二十一) 状态模式
来源:互联网 发布:广州网络推广公司 编辑:程序博客网 时间:2024/04/28 16:56
状态模式也是一种行为型模式,当我们的程序中需要一些状态转换,对于不同的状态需要不同的行为时,我们就可以考虑使用状态模式。
下面用交通灯来当例子。我们需要红黄绿三种颜色的状态。
interface State { void show();}class RedState implements State { @Override public void show() { System.out.println("交通灯变红了"); }}class YellowState implements State { @Override public void show() { System.out.println("交通灯变黄了"); }}class GreenState implements State { @Override public void show() { System.out.println("交通灯变绿了"); }}
然后需要交通灯,它作为状态类的环境,内部应该有所有状态类的实例,并能按照某种规则转换状态。
public class TrafficLight { private State redState = new RedState(); private State yellowState = new YellowState(); private State greenState = new GreenState(); private State current = greenState; public void turn() { if (current == greenState) { current = yellowState; current.show(); } else if (current == yellowState) { current = redState; current.show(); } else { current = greenState; current.show(); } }}
然后客户类不需要关心内部状态的变化,就可以使用状态类了。
public void run() { TrafficLight light = new TrafficLight(); light.turn(); light.turn(); light.turn(); light.turn(); }
0 0
- 设计模式(二十一) 状态模式
- 设计模式笔记二十一:状态模式
- java设计模式(十一)--状态模式
- JAVA设计模式(二十一)——状态模式
- 设计模式(二十一)---组合模式
- 设计模式笔记(十一) —— 状态模式
- PHP设计模式系列(十一):状态模式
- Java设计模式之十一:状态模式
- 设计模式之状态模式(二)
- 设计模式(二十一)之 Visitor
- 【设计模式学习笔记二十一】【行为模式】【状态模式(State)】
- 设计模式二 状态模式
- 设计模式讲解与代码实践(二十一)——状态
- 设计模式学习笔记二十一(Memoento备忘录模式)
- 设计模式之(二十一)模板模式(template)
- C++设计模式之二十一:Strategy(策略模式)
- Java设计模式之二十一(模版模式)
- 大话设计模式二十一:单例模式(Singleton)
- (OK) porting MPTCP to LineageOS-14.1-kiwi (Android-7.1.1,运行在Huawei honor 5x) for VirtualBox- 100% 成功
- opencv学习起步(一)
- 运算符_键盘录入_流程控制语句
- [BZOJ2460][BeiJing2011]元素-线性基
- 爬虫软件爬取公开网络数据案例(以大众点评为例)
- 设计模式(二十一) 状态模式
- POJ2155【二维树状数组模板】
- 2016"百度之星"
- N皇后
- KMP模板+习题
- 【问题解决】Redis存储Hash-Map<String,Object>时无法序列化问题
- ZOJ 3768 Continuous Login
- js动态计算rem
- 可能的克服拖延症的方法