与套接字通信的正确方法

时间:2018-01-14 11:31:53

标签: sockets design-patterns architecture

使用Socket的网络通信是否有任何设计模式或其他内容。 我的意思是我经常做的是:

  • 我收到了来自我的客户或我的服务器的消息
  • 我提取此消息的类型(f.e:LOGIN或LOGOUT或 CHECK_TICKET等......)
  • 我在交换机案例陈述中测试了这种类型
  • 然后执行适合此类型的方法
当你有很多类型的消息时,这种方式有点无聊。 每次我必须添加一个类型,我必须在开关案例中添加它。 此外,当您的协议中有数百或数千种类型的消息时(由于交换机情况),它需要更多的机器操作。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在一组处理程序类上使用循环(即每种类型的消息支持一个)。这基本上是composite patternComponent和每个Composite然后可以独立测试。一旦写入Component,就不需要再次更改,并且对新消息的支持将被隔离到单个新类(或者可能是lambda或函数指针,具体取决于语言)。您还可以在运行时向Composite添加/删除/重新排序Component,如果这是您想要的设计(或者如果您想要阻止它,取决于您可以使用的语言{ {3}})。您也可以查看variadic templates

但是,如果您认为向交换机添加案例有点费力,我怀疑写一个新类也是如此。

P.S。我没有看到避免步骤1和2的好方法。