state模式類似於switch的多路分鐘功能:
狀態模式的ulm圖:
狀態模式用於改變目標物件的行為方式,隨著狀態變化目標程式從乙個轉到另乙個目標程式。
package 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狀態模式是為了根據條件動態改變目標程式。
設計模式之state模式
狀態模式 state pattern 允許乙個物件在其內部狀態改變時改變它的行為。適用場景 一 乙個物件的行為取決於他的狀態,並且它必須在執行時根據狀態改變它 的行為 二 乙個操作中含有龐大的多分支條件語句,並且這些分支依賴於該物件的 狀態。優缺點 狀態模式的主要優點在於封裝了轉換規則,其缺點在於使...
SIP之設計模式 State設計模式
學過設計模式和沒接觸過c 的就不要往下看了。設計模式可能計算機系的同學都學過,不過我用得最多的可能是下面幾種 1.singleton 2.factory 3.strategy 因為這三個我覺得最簡單和使用.但 我的sip是要用狀態機的,所以決定用state設計模式.state模式對我們的sip有什麼...
設計模式之命令(State)模式
狀態模式是在程式開發時,經常用到的模式。如果沒有應用過,而實現業務功能。那你也一定是按照狀態模式的路子走的,只不過你沒有感覺到而已。它的實現,是要根據物件的內部狀態變化,而自動執行相應的功能。費話就不說了,請看一下源 這也是我研究設計模式時看到的乙個例子,把其翻譯成中文,使個位能夠看懂些,由於水平有...