这是一个通用问题。我不是在寻找最佳答案,我只是想让你表达你最喜欢的做法。
我想用 Java 实现一个网络协议(protocol)(但这是一个相当普遍的问题,我在 C++ 中遇到了同样的问题),这不是第一次,因为我以前做过。但我认为我缺少实现它的好方法。实际上,通常都是关于在主机之间交换文本消息和一些字节缓冲区,存储状态并等待下一条消息到来。问题是我通常会得到一堆 switch 和或多或少复杂的 if 语句,它们对不同的状态/消息使用react。整个事情通常变得复杂且难以维护。更不用说有时出来的东西有一些“盲点”,我的意思是协议(protocol)的状态还没有被覆盖并且以不可预测的方式运行。我试图写下一些状态机类,它们以或多或少的智能方式负责检查每个操作的开始和结束状态。这使得协议(protocol)编程变得非常复杂,因为我必须编写一行又一行的代码来涵盖所有可能的情况。 我想要的是一个好的模式,或者是用于编程复杂协议(protocol)的最佳实践,易于维护和扩展并且非常易读。
你有什么建议?
最佳答案
阅读 State 设计模式,了解如何避免使用大量 switch 语句。
“有时出来的东西有一些“盲点”,我的意思是尚未涵盖的协议(protocol)状态......”
状态可以帮助避免差距。它不能保证一个好的设计,你仍然必须这样做。
“...因为我必须编写一行又一行的代码来涵盖所有可能的情况。”
这不应被视为负担或问题:您必须编写代码行来涵盖所有可能的情况。
State 可以提供帮助,因为您可以利用继承。它不能保证一个好的设计,你仍然必须这样做。
关于java - 如何实现网络协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450408/