設計模式3 State設計模式

2021-06-05 14:37:00 字數 1723 閱讀 1047

state狀態設計模式類似於switch多路分支功能的開關,state狀態模式機制如下:

狀態模式

uml圖如下:

state狀態設計模式用於改變物件的行為,在**的生命週期裡,隨著狀態變化從乙個目標實現程式切換到另乙個目標實現程式。

我們經常遇到如下的程式**:

public class creatureelse

}//轉換標識

public void kiss()

public static void main(string args)

}

上面例子**中greet()方法在執行具體操作之前必須要判斷一下標識,**顯得笨拙繁瑣,使用簡單state狀態模式改寫上面**如下:

public class creature

private class forg implements state

}private class prince implements state

}private state state = new forg();

public void greet()

public void kiss()

public static void main(string args)

}

state狀態設計模式中,狀態自動切換並傳播,不需要再改動標識,**顯得非常優雅。

state狀態設計模式乙個基本框架如下:

//狀態介面

inte***ce state

//狀態實現類1

class implementation1 implements state

public void operation2()

public void operation3()

}//狀態實現類2

class implementation2 implements state

public void operation2()

public void operation3()

}//服務提供者

class serviceprovider

//狀態更改

public void changestate(state newstate)

public void service1()

public void service2()

public void service3()

}public class statedemo

public static void main(string args)

}

state狀態模式和proxy**模式都為客戶端程式提供了乙個目標程式**,真正的目標程式被**所隱藏,當客戶端程式呼叫目標程式時,首先將呼叫請求傳送給**,**才真正呼叫目標程式,但是proxy**模式和state狀態模式有如下區別:

(1).proxy**模式中被呼叫的目標程式只有乙個,而state狀態模式中被呼叫的目標程式有多個。

(2).proxy**模式的目的是控制客戶端對目標程式的訪問,而state狀態模式是為了根據條件動態改變目標程式。

設計模式3 State設計模式

state狀態設計模式類似於switch多路分支功能的開關,state狀態模式機制如下 狀態模式uml圖如下 state狀態設計模式用於改變物件的行為,在 的生命週期裡,隨著狀態變化從乙個目標實現程式切換到另乙個目標實現程式。我們經常遇到如下的程式 public class creature els...

設計模式 3 狀態設計模式State

狀態模式用來改變物件的行為,當狀態發生變化時,行為也隨著發生變化,和switch分支語句有點類似,比如如下的 public class creatureelse 轉換標識 public void kiss public static void main string args greet 方法在業務...

State設計模式

最近做實驗時用到了state設計模式,雖然老師說state設計模式要到以後講,但通過自學我已經基本明白其要點,不妨在此寫一些東西。我們知道,軟體在執行過程中,會產生很多的狀態,狀態就是指軟體所處的某一種相對穩定的形式,在這裡我要解釋清楚它和軟體基線的區別。軟體的基線是指軟體本身所處的相對穩定的形式,...