我有一个多线程服务器,等待socket连接。
第一次消息交换总是相同类型的,客户端发送带有身份验证细节(用户ID /密码)的对象,服务器检查并回复服务器是否已通过身份验证。
完成这个第一个消息交换后,客户端将发送一些请求,对应于服务器能够执行的各种任务。如何建模这些不同的请求?特别是,我的问题涉及到在InputObjectStream / OutputObjectStream之间传输的对象类型。
我有两个想法:
使用“通用消息”对象,具有两个属性:任务标识符和HashMap没有泛型,能够携带执行任务所需的各种参数类型。
每种任务都有一个对象,这个解决方案更加“干净”,但我不知道如何使服务器理解接收到的消息类型,我考虑从客户端接收到的消息进行一系列对象强制转换为每个可能的“特定任务消息”,忽略许多CastException。这听起来很糟糕,有没有避免这种情况的方法?
instanceof
。 - obataku