做vip的网站好做吗,新浪云 安装wordpress,优化营商环境 提升服务效能,免费软件app下载大全核心思想就是#xff1a;当对象的状态改变时#xff0c;同时改变其行为#xff0c;很好理解#xff01;就拿QQ来说#xff0c;有几种状态#xff0c;在线、隐身、忙碌等#xff0c;每个状态对应不同的操作#xff0c;而且你的好友也能看到你的状态#xff0c;所以当对象的状态改变时同时改变其行为很好理解就拿QQ来说有几种状态在线、隐身、忙碌等每个状态对应不同的操作而且你的好友也能看到你的状态所以状态模式就两点1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图 State类是个状态类Context类可以实现切换我们来看看代码 package com.xtfggef.dp.state; /** * 状态类的核心类 * 2012-12-1 * author erqing * */
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; /** * 状态模式的切换类 2012-12-1 * author erqing * */
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! 根据这个特性状态模式在日常开发中用的挺多的尤其是做网站的时候我们有时希望根据对象的某一属性区别开他们的一些功能比如说简单的权限控制等。 转载于:https://www.cnblogs.com/hwaggLee/p/4508609.html