狀態模式是行為模式的一種,狀態模式允許改變物件內部狀態來改變物件的行為。
角色和職責:
1.上下文(context)-order:
擁有內部的狀態
2.狀態介面(status)-state
:
乙個所有具體狀態的共同介面;任何狀態都實現這個相同的介面,這樣一來狀態之間可以互相替換
3.具體狀態(concrete state)-:
uml圖:
具體原始碼:
/*** 狀態介面類 */
public
abstract
class
state
/*** 處理
* @param
orderstatus
*/protected
void handler(int
orderstatus)
system.out.println("當前訂單狀態未定義");
return
; }
diaplay();
}/*** 是否當前物件
* @return
*/public
boolean isowner(int owner_order_status,int
orderstatus)
return
false
; }
abstract
void
diaplay();
}
/*** 訂單建立 */
public
class ordercreatestate extends
state
@override
void
diaplay()
}
/*** 訂單支付 */
public
class orderpaystate extends
state
@override
void
diaplay()
}
/*** 訂單完成 */
public
class ordersuccessstate extends
state
@override
void
diaplay()
}
/*** 訂單狀態關閉 */
public
class orderclosestate extends
state
@override
void
diaplay()
}
/*** 訂單 */
public
class
order
public
state getorderstate()
}
publicclass
main
}
結果:訂單建立
訂單支付
訂單完成
訂單支付
當前訂單狀態未定義
設計模式 狀態模式(State)
核心思想就是 當物件的狀態改變時,同時改變其行為。所以,狀態模式就兩點 1 可以通過改變狀態來獲得不同的行為。2 你的好友能同時看到你的變化。state類是個狀態類 這裡用dispenserstate 及實現類 public inte ce dispenserstate public class f...
設計模式 狀態模式(State)
一 狀態模式 state 定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 理解 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。二 狀態模式uml圖 3 context ...
設計模式 狀態模式State
允許乙個物件在內部改變它的狀態,並根據不同的狀態有不同的操作行為。例如,水在固體 液體 氣體是三種狀態,但是展現在我們面前的確實不同的感覺。通過改變水的狀態,就可以更改它的展現方式。應用場景 1 當乙個物件的行為,取決於它的狀態時 2 當類結構中存在大量的分支,並且每個分支內部的動作抽象相同,可以當...