1.狀態模式定義
狀態模式(state pattern)屬於物件行為型模式,其意圖是允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。
2.狀態模式角色
context:使用者物件,擁有乙個state型別的成員,以標識物件的當前狀態。
3.狀態模式深入分析
關係圖:
1)context將於狀態相關的請求委託給當前的concretestate物件處理。
2)context可將自身作為乙個引數傳遞給處理該請求的狀態物件,這使得狀態物件在必要的時候可訪問context
3)context是客戶使用的主要介面,客戶可用狀態物件來配置乙個context,一旦乙個context配置完畢,它的客戶不再需要直接同狀態物件打交道。
4) context或者concretestate子類都可以決定哪個狀態時另外那個狀態的後繼者,以及是在何種條件下進行狀態轉換。
**示例:
package com.example.state;
public abstract class time
package com.example.state;
public class sevenoclock extends timeelse}}
package com.example.state;
public class twelveoclock extends time else}}
package com.example.state;
public class sixteenoclock extends time else}}
package com.example.state;
public class other extends time
}package com.example.state;
public class sister
public integer gethour()
public void sethour(integer hour)
public void setstate(time time)
public time getstate()
public void dosomething()
}測試**:
package com.example.test;
import com.example.state.sister;
public class test
}測試結果:
早上好,該吃早飯了
中午好,該吃早飯了
早上好,該吃早飯了
未來無法**,把握當下
4.狀態模式的優點和缺點
優點:狀態模式使得**中複雜的邏輯判斷問題得到了解決,具體狀態角色將具體狀態和其物件的行為封裝了起來,使得乙個新的狀態的新增變得非常簡單。
缺點:使用狀態模式必須是在有狀態切換的情況下,而且使用狀態模式也增加了**的複雜度,使得**不容易理解。
5.狀態模式的使用情況
一般而言,我們使用狀態模式是為了解決複雜和易變的條件的判斷問題。如果問題本身不複雜或者說問題不是太容易改變,就沒有必要使用狀態模式。因為,
狀態模式本身是複雜的。activity呼叫的方法的不同狀態就是狀態模式的應用。
Android設計模式(十三) 狀態模式
1 定義 當乙個物件內在狀態轉變時,允許改變其行為,這個物件看起來改變了其類 2 優點 將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來 3 目的 消除龐大的條件分支語句 4 使用 當乙個物件的行為取決於它的狀態,並且它在執行時刻必須根據狀態改變它的行為時,就可以考慮狀態模式 5 描述 ...
android遊戲開發之螢幕相容模式
android基礎知識之螢幕相容模式 注意 如果你在低於安卓3.0的版本上進行應用開發,但其在更大螢幕的裝置 比如平板電腦 上顯示正常時,你就需要禁用螢幕兼任模式來保持最佳使用者體驗。要學習如何快速禁用使用者選項,請跳轉至禁用螢幕兼任模式。螢幕兼任模式是一種改善方法,用於不能正常適配大屏裝置 如平板...
Android 設計模式實戰筆記 狀態模式
當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 1.乙個物件的行為取決於它的狀態,並且它的狀態必須在執行時根據狀態改變它的行為 2.中包含大量與物件狀態有關的條件語句,例如,乙個操作中含有龐大的多分支語句 if else且這些分支依賴該物件的狀態 實戰使用者登入系統 取在普通...