設計模式原來這麼簡單 狀態模式

2021-10-12 20:16:27 字數 2127 閱讀 3291

1.什麼是狀態模式

wiki: 狀態模式是一種允許物件在內部狀態改變時改變它的行為的行為型設計模式。

2.示例
假如當前有乙個任務,任務的狀態有待審核、審核通過、審核失敗(建立任務預設時待審核狀態)

3.程式例項
public

inte***ce

istate

public

abstract

class

basestate

implements

istate

@override

public

void

observe()

}

未審核狀態

public

class

unauthstate

extends

basestate

@override

public

void

onenterstate()

}

審核通過

public

class

authenticatedstate

extends

basestate

@override

public

void

onenterstate()

}

審核未通過

public

class

unpassedstate

extends

basestate

@override

public

void

onenterstate()

}

任務實體

@data

public

class

patterntask

public

intgetindex()

public string getdescription()

}private istate state;

public

patterntask()

// 改變狀態

public

void

changestateto

(istate state)

// 檢視狀態

public

void

observestate()

private string id;

private string name;

private string content;

/** * 審核狀態

*/private string authstate;

}

測試

@test

public

void

test()

測試輸出

state-observe:patterntask(state=com.zyy.state.impl.unauthstate@73a8dfcc, id=null, name=null, content=null, authstate=待審核)

state-observe:patterntask(state=com.zyy.state.impl.unpassedstate@ea30797, id=null, name=null, content=null, authstate=審核失敗)

state-observe:patterntask(state=com.zyy.state.impl.authenticatedstate@7e774085, id=null, name=null, content=null, authstate=審核通過)

4.總結

可以通過名字就知道該模式適合當業務中的實體存在較多狀態變化時使用,例如常見的購物訂單的狀態變化以及上例。使用該模式避免了在狀態變化時的硬編碼或存在大量的邏輯判斷而導致**的可閱讀性以及可擴充套件性降低。

設計模式原來這麼簡單 命令模式

1.什麼是命令模式wiki 它把在稍後執行的乙個動作或觸發的乙個事件所需要的所有資訊封裝到乙個物件中。2.例項例如假如有乙個萬能遙控可以對任何東西發出任何命令 3.程式示例public inte ce command 目標 public inte ce target 電視類 public abstr...

設計模式原來這麼簡單 裝飾器模式

1.什麼是裝飾器模式wiki 允許將行為靜態或動態地新增到單個物件中,而不會影響同一類中其他物件的行為。2.例項 以前用的qq秀,需要為角色穿不同的衣服 頭飾 臉飾 上衣 褲子。不同的衣服展示不同的形象,而且還可以 根據形象的炫酷值和好友pk。3.程式示例 qq秀角色 public inte ce ...

設計模式原來這麼簡單 介面卡模式

1.不適用介面卡 航行 public class hangxing 划槳 public class huajiang 只會說啟航並不划槳的老船長 public class chuanzhang 開始冒險 public void startadventures 小明船長按照慣例揚帆起航,而船卻紋絲不動...