Java設計模式
Java工廠設計模式
Java抽象工廠模式
Java單例模式
Java建造者(Builder)模式
Java原型模式
Java適配器模式
Java橋接模式
Java過濾器模式(條件模式)
Java組合模式
Java裝飾模式
Java門面模式(或外觀模式)
Java享元模式(Flyweight Pattern)
Java責任鏈模式
Java命令模式
Java迭代器模式
Java中介者模式(Mediator Pattern)
Java解釋器模式
Java備忘錄模式
Java觀察者模式
Java狀態模式
Java空對象模式
Java策略模式
Java模板模式
Java訪問者模式
Java MVC模式
Java業務代理模式
Java組合實體模式
Java數據訪問對象模式
Java前端控制器模式
Java攔截過濾器模式
Java服務定位器模式
Java傳輸對象模式
Java狀態模式
在狀態模式中,類行為根據其狀態而改變。這種設計模式屬於行為模式。在狀態模式中,我們創建表示各種狀態的對象,以及隨狀態對象變化而行為變化的上下文對象。
實現
我們將創建一個State介面來定義一個動作並實現State介面的具體狀態類。Context是一個載有一個狀態的類。
演示類StatePatternDemo將使用Context和狀態對象來演示上下文行為基於它所處的狀態類型的變化。
第1步:創建一個介面,State.java-
public interface State {
public void doAction(Context context);
}
第2步:創建實現相同介面的具體類。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”;
}
}
第3步:創建Context類,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;
}
}
第4步:使用Context查看狀態更改時的行為更改。StatePatternDemo.java
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());
}
}
第5步:驗證輸出結果
Player is in start state
Start State
Player is in stop state
Stop State