設計模式之State模式

2021-06-22 23:31:44 字數 1451 閱讀 9326

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)模式

狀態模式是在程式開發時,經常用到的模式。如果沒有應用過,而實現業務功能。那你也一定是按照狀態模式的路子走的,只不過你沒有感覺到而已。它的實現,是要根據物件的內部狀態變化,而自動執行相應的功能。費話就不說了,請看一下源 這也是我研究設計模式時看到的乙個例子,把其翻譯成中文,使個位能夠看懂些,由於水平有...