設計模式之狀態模式

2021-09-28 14:17:05 字數 1863 閱讀 9180

原始碼位址

狀態模式: 同樣行為在不同狀態下,能呼叫不同邏輯

例子:

自己qq狀態

事件結果

你發資訊

離線你發資訊

提示你傳送成

注意: 我舉得這個例子 情況比較少,假設有100種可能呢

一直寫if else 1 2 3 4 5 用來區分執行不同邏輯?

假設我們有個訂單,可能會動態新增狀態狀態,且訂單狀態之間變更規律也是動態的,狀態分:可以切換,不可以切換,不可以切換的時候,不執行任何操作(或者報錯), 可以切換的,執行的業務邏輯不一樣

訂單類

public

class

order

public

order

(long id, string orderno, integer orderstate)

public long getid()

public

void

setid

(long id)

public string getorderno()

public

void

setorderno

(string orderno)

public integer getorderstate()

public

void

setorderstate

(integer orderstate)

}

state介面

public

inte***ce

orderstate

state的實現類

public

class

waitpaystate

implements

orderstate

@override

public

void

change

(order order, integer state)

}public

class

initiatepaystate

implements

orderstate

@override

public

void

change

(order order, integer state)

}

context設計

public

class

orderstatecontext

implements

orderstate

@override

public

boolean

ischange

(order order, integer state)

@override

public

void

change

(order order, integer state)

}

演示類

public

class

demo

if(context.

ischange

(order,2))}}

演示結果

碼雲

設計模式之狀態模式

一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...

設計模式之 狀態模式

gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...

設計模式之狀態模式

定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...