狀態模式解決燈開關狀態問題

2021-07-22 09:41:19 字數 1202 閱讀 8158

clevercode最近在研究狀態設計模式,發現狀態設計模式能夠解決很多設計問題。

當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。

2.1 上下文環境(context):它定義了客戶程式需要的介面並維護乙個具體狀態角色的例項,將與狀態相關的操作委託給當前的concrete state物件來處理。

2.2 抽象狀態(state):定義乙個介面以封裝使用上下文環境的的乙個特定狀態相關的行為。

2.3 具體狀態(concrete state):實現抽象狀態定義的介面。

設計乙個燈開關控制器,能夠實現燈的開關。

//開關控制器

class lampswitch

public function on()

public function off()

/*}}}*/

public function setstate(state $state)

/*}}}*/

}/*}}}*/

//開啟狀態

class onstate implements state

//開燈

public function on()

//關燈

public function off()

}/*}}}*/

//關閉狀態

class offstate implements state

//開燈

public function on()

//關燈

燈的開關狀態 模擬

有 n 個燈放在一排,從 l 到 n 依次順序編號。有 n 個人也從 1 到 n 依次編號。l 號將燈全部關閉,2 號將凡是 2 的倍數的燈開啟 3 號將凡是 3 的倍數的燈作相反處理 該燈如為開啟的,則將它關閉 如關閉的,則將它開啟 以後的人都和 3 號一樣,將凡是自己編號倍數的燈作相反處理。程式...

C 紅綠狀態燈

1.在label裡 畫圓,存在窗體重新整理會丟失畫。public void setshowconnectstatus label lbl,bool isok 2.在控制項paint事件裡畫,invalidate 重新整理。private bool isrotaryconnectok false pr...

狀態模式(State Pattern) 事物狀態

前陣子被大師帶著寫介面,還裝逼學了一下react 這裡是我的react部落格 在傳統的開發中,通常 ui 上諸多狀態變化會讓維護應用的狀態變得很困難和複雜。react 通過檢測狀態變化來每次重新渲染虛擬 dom 節點,然後按需自動更新真實節點,這種方式可以讓開發人員可以簡單地專注在應用的狀態上。在r...