让我们假设我具有用于连接类的状态机(例如USB设备),它具有3种状态:uninit, disconnected, connected
。在构造函数中,我尝试初始化驱动程序等。因此,它有可能永远停留在uninit
上。上位类描述设备,因此它具有3种状态:disconnected, connected, init
。仅当连接类处于连接状态时,才能完成从disconnected
到connected
的转换。我应该如何验证它呢?
我在设备类(半伪代码)中有处理方法:
void device::process(event) {
case CONNECTED:
onConnected(event);
case DISCONNECTED:
onDisconnected(event);
case INIT:
onInit(event);
}
我断开连接的情况看起来像
void onDisconnected(event) {
case CONNECT:
connect();
case DISCONNECT:
ignore();
}
因此,在函数connect()
中,我应该尝试将Connection类(及其状态机)设置为CONNECTED状态,获取结果(是否成功?)并处理Device状态。我不明白应该如何进行这种通信(在设备和连接类/ fsm之间)。