狀態(tài)模式
狀態(tài)模式UML.png
interface TransformersState{
void skill();//變形金剛不同狀態(tài)下有不同技能
}
汽車人接口
class CarTransformersState implements TransformersState{
public void skill(){
// 汽車狀態(tài)井佑,技能就是壓馬路吧
}
}
變形金剛的汽車型狀態(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();
}
}
用來管理切換狀態(tà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());//切到跑車模式
context.skill();//跑車狀態(tài)下的技能
}
}
客戶端