Android開發之狀態模式

2021-06-14 09:48:49 字數 1678 閱讀 3702

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且這些分支依賴該物件的狀態 實戰使用者登入系統 取在普通...