狀態模式思想:定義乙個狀態類,裡面可以實現多種狀態的轉換,每個狀態由乙個單獨類來判斷和實現,物件裡有設定更新狀態的方法,獲得當前狀態的方法來跳轉到其他狀態類的方法中(因為setstate的時候把state的狀態變為另乙個子類,然後呼叫子類自己的判斷方法,滿足條件,則用new乙個新狀態代替原來狀態來跳轉->使用物件的getstate,此時呼叫的「當前狀態函式」是new出來狀態的物件的(即父類的子類方法實現接管- -)) 總結:狀態方法判斷,達到條件,物件執行set新狀態方法,物件get到新狀態的currentstate然後轉到新狀態自己判斷方法中!
#include
#include
#include
using namespace std;
class war;
class state
virtual void metaphase() {}
virtual void anaphase() {}
virtual void end() {}
virtual void currentstate(war *war) {}
};//戰爭
class war
~war()
int getdays()
void setdays(int days)
void setstate(state *state)
void getstate()
};//戰爭結束
class endstate: public state
}void currentstate(war *war)
};//中期
class metaphasestate: public state
}void currentstate(war *war)
};//前期
class prophasestate: public state
}void currentstate(war *war)
};int main()
delete war;
return 0;
}
C 設計模式之狀態模式
狀態模式,當乙個物件的內在狀態改變時,語序改變其行為,這個物件看起來像是改變了其類 include using namespace std class state class forenoon class noon class afternonn class evening class gohome...
(C )設計模式之狀態模式
1.狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起像是改變了其類。狀態模式主要解決的是當控制乙個物件的狀態轉換的條件表示式過於複雜時,可以將狀態的判斷邏輯轉移到表示不同狀態的一系列類中,將複雜的判斷邏輯簡化。將特定與狀態相關的行為區域性化,並且將不同狀態的行為分割開來。當乙個物件的...
C 設計模式之 狀態模式(State)
當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以複雜的判斷邏輯簡化。abstract class state class concretestatea...