溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在java項(xiàng)目中使用State狀態(tài)模式

發(fā)布時(shí)間:2020-12-03 15:08:57 來源:億速云 閱讀:186 作者:Leah 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)怎么在java項(xiàng)目中使用State狀態(tài)模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

java 之State狀態(tài)模式

在狀態(tài)模式中,一個(gè)類的行為基于它的狀態(tài)的改變而改變。狀態(tài)模式歸屬于行為型模式。

在下面的實(shí)例中,我們創(chuàng)建了一個(gè)接口State,定義了一個(gè)操作方法,兩個(gè)實(shí)現(xiàn)類StartState和StopState。另外,創(chuàng)建了一個(gè)上下文類Context,這個(gè)類關(guān)聯(lián)到State類。UML類圖如下所示:

怎么在java項(xiàng)目中使用State狀態(tài)模式

//狀態(tài)類 
public interface State { 
  public void doAction(Context context); 
} 
//實(shí)現(xiàn)類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"; 
  } 
} 
//實(shí)現(xiàn)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 實(shí)際運(yùn)用時(shí)可自行更改 
public class Context { 
  private State state; 
  public Context(){ 
   state = null; 
  } 
  public void setState(State state){ 
   this.state = state;         
  } 
  public State getState(){ 
   return state; 
  } 
} 
 
//測(cè)試類 
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()); 
  } 
} 

輸出結(jié)果

Player is in start state

Start State

Player is in stop state

Stop State

上述就是小編為大家分享的怎么在java項(xiàng)目中使用State狀態(tài)模式了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI