我在執行從下面的StackOverflow後一點幫助狀態模式了個去:狀態模式:解耦的MoveNext()方法
好爲止。 我現在可以移動的對象(文件,到下一個狀態,即的確認。)現在
public override void MoveNext(Document currDoc, IProcessor currProcessor)
{
TransitionTo<ACKNOWLEDGED>(() => new ACKNOWLEDGED(_factory, _context));
currProcessor.LogTheChange(currDoc);
currProcessor.DoSomethingElse(currDoc)
}
,在改變狀態的過程中,我想在不同的類執行其他操作。 我懷疑將狀態和IP處理器耦合是一個好主意。
我相信國家應該只關心在兩個謹慎的狀態之間變化(在這種情況下是UNACKNOWLEDGED和ACKNOWLLEDED)。
底層對象的實際更新如何發生?據我所知,我已將doc對象傳遞給moveNext()方法,以便它可以在別處傳遞。如果這不正確,那麼我的狀態對象應該如何與IP處理器以分離的方式進行通信,是否應該引發IP處理器將處理的事件?或者,我是否應該將接口作爲MoveNext()方法中的參數傳遞?我懷疑不是。
您是否選擇使用該帖子和「MoveNext」範例,因爲您的狀態以該帖子中呈現的線性方式移動?我的經驗是,許多狀態機在其狀態轉換中都有分支或循環。 – tcarvin
hiya,是的它以線性方式移動。它不需要更復雜的目前..我有的問題是,這個特定的moveNext()方法目前耦合到a)currDoc b)IProcessor。 –
什麼是IProcessor,它來自哪裏? – tcarvin