Android設計模式(十三) 狀態模式

2021-07-03 08:59:30 字數 2557 閱讀 1019

1、定義:

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

2、優點:

將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來;

3、目的:

消除龐大的條件分支語句;

4、使用:

當乙個物件的行為取決於它的狀態,並且它在執行時刻必須根據狀態改變它的行為時,就可以考慮狀態模式;

5、描述:

將特定狀態的行為都放到乙個物件中,將所有與狀態相關的**都放到乙個類status中,通過定義新的子類可以很容易的增加新的狀態和轉換;

6、缺點:

會增加系統類和物件的個數,增加系統的複雜性;

7、簡單的demo:

彩票的追期中,有普通,包月,季度,半年,和一年等狀態,下面的demo 就是描述這一狀態的轉變;

package com.example.demo.state;

/** * 追期的狀態

* @author qubian

* @data 2023年6月16日

* @email [email protected]

* */

public inte***ce flowstate

package com.example.demo.state;

/** * 普通狀態

* @author qubian

* @data 2023年6月18日

* @email [email protected]

* */

public class ******flowstate implements flowstate

@override

public void last(flowmanager manager)

@override

public void next(flowmanager manager)

}package com.example.demo.state;

/** * 包月

* @author qubian

* @data 2023年6月18日

* @email [email protected]

* */

public class monthflowstate implements flowstate

@override

public void last(flowmanager manager)

@override

public void next(flowmanager manager)

}package com.example.demo.state;

/** * 季度

* @author qubian

* @data 2023年6月18日

* @email [email protected]

* */

public class seasonflowstate implements flowstate

@override

public void last(flowmanager manager)

@override

public void next(flowmanager manager)

}package com.example.demo.state;

/** * 包年

* @author qubian

* @data 2023年6月18日

* @email [email protected]

* */

public class yearflowstate implements flowstate

@override

public void last(flowmanager manager)

@override

public void next(flowmanager manager)

}

追期管理:對所有追期的狀態進行管理,

使用:

package com.example.demo.state;

/** * 追期管理

* @author qubian

* @data 2023年6月18日

* @email [email protected]

* */

public class flowmanager

public void setstate(flowstate state)

public int flownum=1;

public void tonext()

public void tolast() }

package com.example.demo.state;

import android.util.log;

public class usestate

}}

8、在android原始碼中,也有用到狀態模式,關於statemachine狀態機中使用到的狀態state模式,因為自己沒有具體研究,就不寫了。

以後有時間補上。

設計模式之狀態模式(十三)

當乙個物件的內在狀態改版的時候,允許改變其行為,這個物件看起來像是改變了其類。簡單來說就是我們在程式設計的時候可能會根據物件的狀態去寫很多的判斷語句if else。那麼狀態模式就是將判斷的語句封裝到乙個物件中,這樣對於擴充套件和改變狀態的判斷都非常的方便。汽車我們都知道有油箱,但是對於油箱還有多少的...

十三 狀態模式

狀態模式,當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中。state public abstract class statestatea public c...

Android 設計模式實戰筆記 狀態模式

當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 1.乙個物件的行為取決於它的狀態,並且它的狀態必須在執行時根據狀態改變它的行為 2.中包含大量與物件狀態有關的條件語句,例如,乙個操作中含有龐大的多分支語句 if else且這些分支依賴該物件的狀態 實戰使用者登入系統 取在普通...