我只是在玩#34状态设计模式"并且有一些关于如何在状态机中处理错误的问题。我们来看下面的案例
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的情况。我是否编写了基本功能实现,没有任何错误或可能是错误记录功能?
答案 0 :(得分:1)
此设计模式要求您提供可用于每个州的公共方法。如果您遇到一种情况,您觉得有兴趣添加仅对其中一个有效的操作,则可能意味着以下情况之一:
答案 1 :(得分:0)
我决定使用状态设计模式进行微小改动:
为“do_task”之类的函数使用通用名称,并使用它来调用所需的私有函数。
这提供了状态设计模式的好处,同时防止创建剩余的绝对虚函数