[英]State Design Pattern: Error Handling
我只是在玩“狀態設計模式”,對狀態機中錯誤的處理方式有幾個問題。 讓我們來看下面的情況
class state_machine
{
private:
state state1;
state state2;
public:
}
class state
{
private:
state_machine* m_state_machine; /** Will pass the pointer to states **/
public:
void perform_state1_action();
void perform_state2_action();
}
class state1: public state
{
public:
void perform_state1_action()
{
/**
Functionality
**/
}
void perform_state2_action(); // Have nothing to do for this function
}
class state2: public state
{
public:
void perform_state2_action()
{
/**
Functionality
**/
}
void perform_state1_action(); // Have nothing to do for this function
}
我的問題是,當狀態為state1時,我們如何妥善處理我們調用perform_state2_action的情況。 是否編寫沒有任何內容或可能有錯誤記錄功能的基本功能實現?
此設計模式要求您提供可用於每個州的公共方法。 如果您遇到需要添加僅對其中之一有效的操作的沖動,則可能表示以下情況之一:
我決定使用狀態設計模式進行較小的更改:
對諸如“ do_task”之類的函數使用通用名稱,並使用該名稱來調用所需的私有函數。
這提供了狀態設計模式的優點,同時防止了創建多余的絕對虛函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.