design-patterns - 如何设计不同设计模式的tcp通信?

  显示原文与译文双语对照的内容

我实际上正在计划一个小型的tcp客户机/服务器。 在体系结构中,我希望尽可能多地实现设计 Pattern 。

现在我有一个这样的架构: 客户端将数据包发送到服务器。 在这个数据包中,有一个标头,如用户名。密码。包类型。标识符等等。 它们也是一个实体( 它只是一个字节的array )

如果服务器从客户机检索一个数据包,它将被解析。 对于每个包类型,只存在一个分析器。 每个解析器处理与正文/内容不同的。

例如客户端向服务器发送一个包类型为 register的数据包。 服务器选择"register 解析器"并使用正文中的信息处理。 例如,如用户名。密码。电子邮件和它的他注册事件的字符串。

每个数据包都有一个响应。 例如如果客户端发送一个注册包,他应该得到通知,如果注册成功或者不成功。

如果我创建一个包,我会为每个包类型创建包编辑器,这将为我创建。

所以现在我的问题。 我将尽可能多地实现设计模式,但是?

对于包分析器,我想我会选择一个工厂,它将为实际包类型提供正确的解析器。

为了解析For我想了解命令 Pattern,它会为我提供一个调用来创建响应数据包。

你觉得这个怎么样。 我的架构垃圾是什么我可以选择 Pattern?

时间:

关于带有

客户端将数据包发送到服务器。

你可以使用命令设计 Pattern 插件,如你所建议

创建响应包的回调。

但这不是你唯一能用的。 实际上你的整个沟通过程可以从概念中获得利润。 由于一般使用是将请求封装为对象,因此允许你使用不同的请求。队列或者日志请求参数化客户端,并支持各种操作。 你也可以考虑链的负责,关于传递一个对象链之间的请求的方式。 它将帮助你避免将请求的发送者联系到接收器,以便提供多个对象来处理请求。 链接 接收 到 象 并 沿着 链路 传递 请求 直到 一个 对象 处理 它.

良好的解决方案也可以是观察者设计 Pattern 。 它将提供一种通知更改到多个类的方法

如果客户端发送了一个注册包,他应该得到通知,如果注册成功或者不成功。

在对象之间定义依赖关系,以便当一个对象更改状态时,将自动通知和更新它的所有从属对象。

我认为 Decorator设计 Pattern 插件可以用于

如果我创建一个包,我会为每个包类型创建包编辑器,这将为我创建。

因为它可以动态向对象添加职责,并提供灵活的替代子类来扩展功能。

...