設計模式之State 交通篇

2021-03-31 08:56:32 字數 1532 閱讀 3147

「小朋友過馬路,左右看,紅燈停,綠燈行,阿姨誇我是乖寶寶。」,我給女兒念著兒歌,突然女兒問我,什麼是紅綠燈啊?為了給她說清楚,我特意帶她看我們家附近的交通燈(

nearmyfamilytrafficlight

)的執行。我們都知道,交通燈有三種狀態:紅燈(

redlight

)、黃燈(

yellowlight

)和綠燈(

greenlight

)。交通燈狀態的改變是由控制中心(

controlcenter

)來控制的。

下面讓我們來看看這個過程是如何實現的。

1、在這裡,先定義交通燈(

trafficlight

)介面類:

public inte***ce trafficlight

2、我們家附近的交通燈(

nearmyfamilytrafficlight

)是對交通燈(

trafficlight

)介面的具體實現:

public class nearmyfamilytrafficlight implements trafficlight

public void showgreenlight()

public void showyellowlight()}

3、定義控制中心(

controlcenter

)類:public class controlcenter

public void showredlight()

public void showgreenlight()

public void showyellowlight() }4

、我們家附近的交通燈(

nearmyfamilytrafficlight

)實際上有紅、黃、綠三盞燈組成:

a:紅燈(

redlight

)類:public class redlight extends nearmyfamilytrafficlight

return null;}}

b:綠燈(

greenlight

)類:public class greenlight extends nearmyfamilytrafficlight

return null;}}

c:黃燈(

yellowlight

)類:public class yellowlight extends nearmyfamilytrafficlight

return null;}}

5、編寫測試類:

public class test }6

、說明:a:

state

的定義:

不同的狀態

,不同的行為

;或者說

,每個狀態有著相應的行為。b:

我們可以看到,燈狀態的改變是有控制中心來控制,通過顯示不同的燈,實現了交通的正常運轉。

c:因此當有狀態切換這種事情要處理時,我們就可以用

state

這種模式了。

設計模式之State 交通篇(原創)

設計模式之 state 交通篇 小朋友過馬路,左右看,紅燈停,綠燈行,阿姨誇我是乖寶寶。我給女兒念著兒歌,突然女兒問我,什麼是紅綠燈啊?為了給她說清楚,我特意帶她看我們家附近的交通燈 nearmyfamilytrafficlight 的執行。我們都知道,交通燈有三種狀態 紅燈 redlight 黃燈...

設計模式之State模式

state模式類似於switch的多路分鐘功能 狀態模式的ulm圖 狀態模式用於改變目標物件的行為方式,隨著狀態變化目標程式從一個轉到另一個目標程式。package state public class creature private class forg implements state pri...

設計模式之state模式

狀態模式 state pattern 允許一個物件在其內部狀態改變時改變它的行為。適用場景 一 一個物件的行為取決於他的狀態,並且它必須在執行時根據狀態改變它 的行為 二 一個操作中含有龐大的多分支條件語句,並且這些分支依賴於該物件的 狀態。優缺點 狀態模式的主要優點在於封裝了轉換規則,其缺點在於使...

SIP之設計模式 State設計模式

學過設計模式和沒接觸過c 的就不要往下看了。設計模式可能計算機系的同學都學過,不過我用得最多的可能是下面幾種 1.singleton 2.factory 3.strategy 因為這三個我覺得最簡單和使用.但 我的sip是要用狀態機的,所以決定用state設計模式.state模式對我們的sip有什麼...

設計模式之命令(State)模式

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