我有持有任意狀態的一類,它的定義是這樣的:選擇那些可能改變其內在屬性一類的設計模式
class AbstractFoo
{
};
template <class StatePolicy>
class Foo : public StatePolicy, public AbstractFoo
{
};
國家政策只包含受保護的屬性是代表國家。
狀態可能對於多個行爲是相同的,並且它們可以在運行時被替換。
所有Foo對象都具有相同的接口來抽象狀態本身並允許在容器中存儲Foo對象。
我想找到最簡單和最可維護的方式來表達這一點。
編輯:
這裏是我的問題的一些詳細信息:
富是代表了某個硬件可以改變物理或通過UI的狀態和行爲類(或有多個用戶界面)。
我還有四個問題:
1)信號/插槽機制會做什麼?
2)是否可以綁定Foo中的某個插槽發出的每個信號,使其具有指向Foo的指針,就像它是成員類一樣?
3)我是否應該使用訪問者而不是將Foo作爲訪問類?
4)爲什麼StatePolicy設計不好?
下面是更新API:
class AbstractFoo
{
public:
virtual void /*or boost::signal*/ notify() = 0; // Updates the UI.
virtual void /*or boost::signal*/ updateState() = 0 // Updates the state
};
虛擬函數,多態性或存儲指向對象的指針會有幫助嗎?對不起,我只是想了解你的問題。 – 2010-04-30 02:35:54
當然由於界面相同,存在虛擬功能。但是,每個對象的API的行爲可能會在運行時發生變化。 – 2010-04-30 02:40:42