搜索网站有哪几个,wordpress 釆集插件,哪里有培训网,wordpress首页缓存自动清空目录
0、定义
1、状态模式的三种角色
2、状态模式的UML类图
3、示例代码 0、定义 允许一个对象在其内部状态改变时改变它的行为#xff0c;对象看起来似乎修改了它的类。
1、状态模式的三种角色
环境#xff08;Context#xff09;#xff1a;环境是一个类#xff0…目录
0、定义
1、状态模式的三种角色
2、状态模式的UML类图
3、示例代码 0、定义 允许一个对象在其内部状态改变时改变它的行为对象看起来似乎修改了它的类。
1、状态模式的三种角色
环境Context环境是一个类该类有抽象状态State声明的变量可以引用任何具体状态类的实例。用户对该环境Context类的实例在某种状态下的行为感兴趣。抽象状态State抽象状态是一个接口或抽象类。抽象状态中定义了与环境Context的一个特定状态相关的若干个方法。具体状态Concrete State具体状态是实现抽象状态的类。
2、状态模式的UML类图 3、示例代码
抽象状态
package xyz.jangle.design.state;
/*** 抽象状态* author Administrator**/
public abstract class State {public abstract void handle();}具体状态A 对拓展开放可创建多个具体状态
package xyz.jangle.design.state;public class ConcreteStateA extends State {Overridepublic void handle() {System.out.println(to do something A );}}具体状态B
package xyz.jangle.design.state;public class ConcreteStateB extends State {Overridepublic void handle() {System.out.println(to do something B );}}环境上下文对修改关闭
package xyz.jangle.design.state;public class Context {private State state;public void request() {if(state ! null)state.handle();}public void setState(State state) {this.state state;}}客户端使用
package xyz.jangle.design.state;
/*** 状态模式* author Administrator**/
public class AppMain20 {public static void main(String[] args) {ConcreteStateA stateA new ConcreteStateA();Context context new Context();context.setState(stateA);context.request();context.setState(new ConcreteStateB()); //切换状态Bcontext.request();}}运行结果
to do something A
to do something B