設計模式之狀態模式

2021-09-03 02:39:19 字數 1033 閱讀 7360

在狀態模式中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。狀態模式是把所有的行為包裝在不同的狀態物件中,意在是讓乙個物件在其內部改變的時候,他的行為也跟著改變。

1、行為隨狀態改變而改變的場景。

2、**中包含大量的條件語句,比如if-else和switch-case,且這些條件依賴於該物件的狀態。

public inte***ce state
現在我們建立2個分別叫做開始和停止的實體類去實現這個介面:

public class startstate implements state 

public void musicadd()

}

public class stopstate implements state 

public void musicadd()

}

接著我們建立乙個控制類去控制這兩個狀態:

public class controller 

public void start()

public void stop()

public void musicadd()

}

最後我們寫個demo看看功能:

public class statepatterndemo 

}

最後我們看看結果:

player is in start state

musicadd

player is in stop state

狀態模式的關鍵點在於不同狀態下對同一行為的響應,從上述例子中我們可以看出,只有**開始的時候才能控制**的聲音,關閉則不行,當然我這邊只是舉個例子~還有許多其他地方也會用到狀態模式。當然並不是所有的if-else和switch-case都要用到狀態模式,模式運用要考慮到所對應的場景以及解決的問題。

優點:

缺點:

設計模式之狀態模式

一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...

設計模式之 狀態模式

gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...

設計模式之狀態模式

定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...