资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么在java项目中使用State状态模式

这期内容当中小编将会给大家带来有关怎么在java项目中使用State状态模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业南和免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

java 之State状态模式

在状态模式中,一个类的行为基于它的状态的改变而改变。状态模式归属于行为型模式。

在下面的实例中,我们创建了一个接口State,定义了一个操作方法,两个实现类StartState和StopState。另外,创建了一个上下文类Context,这个类关联到State类。UML类图如下所示:

怎么在java项目中使用State状态模式

//状态类 
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"); 
   context.setState(this);  
  } 
  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"); 
   context.setState(this);  
  } 
  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; 
  } 
} 
 
//测试类 
public class StatePatternDemo { 
  public static void main(String[] args) { 
   Context context = new Context(); 
   StartState 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 state

Start State

Player is in stop state

Stop State

上述就是小编为大家分享的怎么在java项目中使用State状态模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


分享标题:怎么在java项目中使用State状态模式
链接分享:http://cdkjz.cn/article/iephgc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220