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設計模式要到以後講,但通過自學我已經基本明白其要點,不妨在此寫一些東西。我們知道,軟體在執行過程中,會產生很多的狀態,狀態就是指軟體所處的某一種相對穩定的形式,在這裡我要解釋清楚它和軟體基線的區別。軟體的基線是指軟體本身所處的相對穩定的形式,...