在我的 TCP 应用程序中,只要 IO 处于阻塞状态,State 设计模式似乎就很有用。
我的 SwingWorker 的 doInBackground() 可以通过引用一个对象来循环读取、写入和接受 TCP 连接中的状态。请参阅维基百科讨论页上的示例:http ://en.wikipedia.org/wiki/Talk%3AState_pattern 。
但是,当我将服务器重构为非阻塞 IO 时,它似乎不再有用。Select() 返回一组为 IO 准备的通道,这些通道通过引用一系列 if 语句中的 SelectionKey 状态来处理。
任何人都可以根据经验或理解当 IO 非阻塞时状态设计模式是否仍然有用?
我问是因为我不确定我是否正确掌握了状态设计模式和 TCP 的关系。