[设计模式]状态模式(State)---状态变 行为变
2017-05-17 20:29
531 查看
状态模式的核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:
State类是个状态类,Context类可以实现切换,我们来看看代码:
测试类:
输出:
execute the first opt!
execute the second opt!
根据这个特性,状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。
State类是个状态类,Context类可以实现切换,我们来看看代码:
/** * @author binkang */ public class State { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public void method1(){ System.out.println("execute the first opt!"); } public void method2(){ System.out.println("execute the second opt!"); } }
/** * @author binkang * */ public class Context { private State state; public Context(State state) { this.state = state; } public State getState() { return state; } public void setState(State state) { this.state = state; } public void method() { if (state.getValue().equals("state1")) { state.method1(); } else if (state.getValue().equals("state2")) { state.method2(); } } }
测试类:
public class Test { public static void main(String[] args) { State state = new State(); Context context = new Context(state); //设置第一种状态 state.setValue("state1"); context.method(); //设置第二种状态 state.setValue("state2"); context.method(); } }
输出:
execute the first opt!
execute the second opt!
根据这个特性,状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。
相关文章推荐
- 【设计模式】行为模式之State状态
- 【设计模式学习笔记二十一】【行为模式】【状态模式(State)】
- 【设计模式基础】行为模式 - 8 -状态(State)
- 行为设计模式---状态模式(State)
- C++实现设计模式 - STATE(状态)—对象行为模式(第二十个)
- [设计模式](十二):备忘录模式(Memento)|状态模式(State) - (两种类状态行为模式)
- Java设计模式(22)——行为模式之状态模式(State)
- 【java设计模式之State(对应每种状态的行为) 】
- 设计模式学习总结10 - 行为型5 - State状态模式
- 设计模式生活篇: State 看状态吧
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- 设计模式之State(状态)
- 实战设计模式系列-State(状态)
- 设计模式----State(状态)
- 设计模式之State(状态模式)
- 设计模式--State状态模式
- 设计模式——状态模式(State)
- 设计模式之状态模式(State)
- java设计模式-状态模式(STATE)
- 设计模式----State(状态)模式