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=待審核)4.總結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=審核通過)
可以通過名字就知道該模式適合當業務中的實體存在較多狀態變化時使用,例如常見的購物訂單的狀態變化以及上例。使用該模式避免了在狀態變化時的硬編碼或存在大量的邏輯判斷而導致**的可閱讀性以及可擴充套件性降低。
設計模式原來這麼簡單 命令模式
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 小明船長按照慣例揚帆起航,而船卻紋絲不動...