欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 设计模式之State(状态模式)

程序员文章站 2024-02-23 11:03:58
java 设计模式之state(状态模式) 在状态模式中,一个类的行为基于它的状态的改变而改变。状态模式归属于行为型模式。 在下面的实例中,我们创建了一个接口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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!