设计模式学笔记本--状态模式
来源:互联网 发布:无广告视频软件 编辑:程序博客网 时间:2024/06/05 20:13
二十一、状态模式
状态模式(State Pattern),类的行为是基于它的状态改变的,需要创建一个表示各种状态的对象以及一个行为随着状态对象变化而改动的对象。
简介
状态模式允许对象在内部状态发生变化时候改变它的行为,通过条件语句来判定。
- 优点:封装了转换规则、通过枚举状态便捷的扩展新状态和行为。共享对象,减少系统中对象个数。
- 状态模式的使用会增加系统的类及对象个数。实现复杂,不易准确构建。开闭原则的支持不太好。
实现
创建一State
接口和它的实现类,Context
是一个带有状态的行为类。
- 创建接口
State.java
public interface State { public void doAction(Context context);}
- 创建接口实现类
StartState.java
public class StartState implements State { public void doAction(Context context){ System.out.println("Player is in start state"); } public String toString(){ return "Start State"; }}
StopState.java
public class StopState implements State { public void doAction(Context context){ System.out.println("Player is in stop state"); } public String toString(){ return "Stop State"; }}
- 创建行为类
Context.java
public class Context { private State state; public Context(){ state =null; } public void setState(State state){ this.state = state; } public State getState(){ return state; }}
- 演示
StatePatternDemo.java
public class StatePatternDemo { public static void main(String[] args){ Context context = new Context(); State startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); }}
- 输出
Player is in start stateStart StatePlayer is in stop stateStop State
0 0
- 设计模式学笔记本--状态模式
- 我学设计模式 之 状态模式
- 每天学一点设计模式-状态模式
- 菜鸟学设计模式----状态模式
- 讲故事学设计模式-状态(State)模式
- e学编程之《设计模式》篇-状态模式
- 设计模式:状态模式
- 设计模式-----状态模式
- 设计模式 状态模式
- 设计模式 - 状态模式
- 设计模式---状态模式
- 设计模式-状态模式
- 设计模式:状态模式
- 设计模式 - 状态模式
- 设计模式-状态模式
- 设计模式--状态模式
- 设计模式-状态模式
- 设计模式:状态模式
- 怎样才能让百度搜索到自己的csdn博客?
- 内核代码中注册的概念
- 利用jquery.validate异步验证用户名是否存在
- 工商银行支付接口 B2C PHP ecshop
- jquery判断是否包含某个字符串
- 设计模式学笔记本--状态模式
- C# 与 C++ 数据类型对照表
- 全民挂机西游隐私政策
- tableView在穿透导航栏以后让section悬浮在导航栏下面
- YouTube 电影推荐系统
- 满满爱
- SAP中使用FS10N读取某一会计科目的值
- 对称算法的四种运行模式
- 8面向对象高级编程--->高级概念