设计模式随笔之状态模式(State)
来源:互联网 发布:软件行业发展趋势 编辑:程序博客网 时间:2024/06/05 01:02
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:
State类是个状态类,Context类可以实现切换,我们来看看代码:
package com.xtfggef.dp.state; 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!"); } }
package com.xtfggef.dp.state; 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!
根据这个特性,状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。
0 0
- 设计模式随笔之状态模式(State)
- 设计模式之State(状态模式)
- 【设计模式】之状态模式(State)
- 设计模式之状态模式(State)
- 设计模式之状态模式(STATE)
- 设计模式之(State)状态模式
- 设计模式之状态模式(State)
- 设计模式之状态模式(State)
- 设计模式之State(状态)
- 设计模式之状态设计模式,state
- 设计模式学习之------State模式(状态模式)
- 设计模式之state状态模式
- 设计模式之State Pattern 状态模式。
- Java设计模式之State(状态模式)
- 设计模式之(十七)状态模式State
- 设计模式之状态模式(State Pattern)
- 设计模式之十 --- 状态(State)模式
- 浅学设计模式之状态<state>模式
- Android 使用服务注册广播接收者
- 关于getDeclaredMethod方法的用法
- js生成二维码
- 图论算法-并查集
- 报错分析__error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression
- 设计模式随笔之状态模式(State)
- Java可变长参数varargus
- 如何实现复杂的listview的效果
- 修改Ubuntu/Linux终端显示的路径长度
- Android中判断网络是否可用的代码分享
- C++ 消息(成员函数调用)的动态绑定
- leetcode 338. Counting Bits
- LinkedList源码分析(基于jdk1.8)
- RecyclerView使用介绍