1
我正在編寫一個UI測試/機器人程序。該程序模擬一個人的行爲。使用FSM:當前窗口由狀態表示,通過轉換點擊窗口按鈕。該程序分析當前窗口並執行下一個轉換。這裏的問題。信息可能會出現一個意外的窗口。一種解決方案是爲每個狀態定義一個轉換,描述意外的窗口。有限狀態機與其他技術在C#中的UI測試#
在開始程序之前,您需要選擇所需的行爲。所以對於FSM,我應該根據選定的行爲使用另一個轉換。 Q1:你可以使用OOP方法解決這個問題嗎?
我試圖寫下面的實現。每個狀態都由一個類表示。在每個狀態類中調用一個重載的方法,決定應選擇下一個狀態。我選擇的語言是C#。 Q2:我可以使用哪些編程方法作爲FSM的替代方案?
該程序可以模擬想要實現特定最終目標的人的行爲。這個目標可能是要執行半小時的類似職責。該算法執行有用的工作來減輕用戶。順便也通過UI進行測試。 – 2012-07-13 15:39:57
謝謝你的好主意。我遵循你的設計模式的例子。 「策略」模式要求具有正確的「ConcreteStrategy」類的「上下文」被初始化。我是否需要爲每個州增加一個班級或功能?一個初始化「ConcreteStrategy」的「工廠」?編程工作量不小。 – 2012-07-13 15:51:45
是的,正如你所說的「在每個狀態類中調用一個重載的方法,決定了下一個狀態應該選擇什麼。」,你必須爲每個需要的狀態實現每個策略的類,例如'StateAStrategy1' ,'StateAStrategy2'等等。 Factory被用作輸入所選策略並獲得正確狀態類作爲輸出的方式:'StateFactory.GetStates(StrategyC)'應該返回實現「C」策略的狀態類。請注意,對於某些州而言,所有策略都可以使用相同的類,而其他州可以使用不同的類。 – 2012-07-16 12:14:57