狀態(tài)模式

狀態(tài)模式UML.png
interface TransformersState{
void skill();//變形金剛不同狀態(tài)下有不同技能
}
汽車(chē)人接口
class CarTransformersState implements TransformersState{
public void skill(){
// 汽車(chē)狀態(tài),技能就是壓馬路吧
}
}
變形金剛的汽車(chē)型狀態(tài)
class FightingTransformersState implements TransformersState{
public void skill(){
// 戰(zhàn)斗狀態(tài),技能反正不是壓馬路,就假設(shè)為射擊技能吧
}
}
變形金剛的戰(zhàn)斗型狀態(tài)
class Context{
TransformersState mTransformersState;
public void setState(TransformersState mTransformersState){
this.mTransformersState = mTransformersState;
}
public void skill(){
mTransformersState.skill();
}
}
用來(lái)管理切換狀態(tài)的類(lèi)
class Client{
public static void main(String[] args){
Context context = new Context();
context.setState(new FightingTransformersState());//切到戰(zhàn)斗模式
context.skill();//戰(zhàn)斗狀態(tài)下的技能
context.setState(new CarTransformersState());//切到跑車(chē)模式
context.skill();//跑車(chē)狀態(tài)下的技能
}
}
客戶(hù)端