《Head First 設計模式》學習筆記:狀態模式

狀態模式:

允許對象在內部狀態改變時改變它的行爲,對象看起來好象修改了它的類。
 
以糖果機應用爲例:
1,定義狀態接囗(或抽象類),在這個接囗裏,糖果機的每個動作都有一個對應的方法;
2,爲糖果機的每個狀態定義對應的狀態類,狀態類必須實現狀態接囗及其方法,這些類將負責在對應的狀態下進行機器的行爲;
3,狀態類需要取得糖果機的實例,以便於必要時改變糖果機狀態;
4,糖果機類首先實例化所有狀態對象,並給出初始狀態對象;
5,糖果機對象在有動作時,委託當前狀態的對應動作方法進行機器行爲,並根據條件改變糖果機當前狀態;
 
基本常識:策略模式和狀態模式是雙胞胎,在出生時才分開。策略模式是圍繞可以互換的算法來創建成功業務;狀態模態則通過改變對象內部的狀態來幫助對象控制自己的行爲。
 
要點:
狀態模式允許一個對象基於內部狀態不同而擁有不同行爲;
狀態模式使用類代表狀態;
Context會將行爲委託給當前對象;
通過將每個狀態封裝進一個類,我們以後需要做的任務改變局部化了;
狀態模式與策略模式有相同的類圖,但它們的意圖不同;
策略模式通常會用行爲或算法來本置Context類;
狀態模式允許Context隨着狀態的改變而改變行爲;
狀態轉換可以由State類或Context類控制;
使用狀態模式通常會導致設計中的類數量大量增加;
狀態類可以被多個Context實例共享。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章