在我的程序中,我正在通过Java套接字从客户端获取请求。每个请求都有一个唯一的命令标识符,该标识符对应于应用程序侧的指定命令。现在,我有了一个带有很大开关的类,它根据收到的命令ID创建命令类的实例。此类ByteBuffer从客户端和ClientConnection对象接收带有请求数据的类(代表客户端与服务器之间的连接的类)。它从读取前两个字节ByteBuffer并获取相应的命令(扩展ClientRequestclass的class实例)。例如:public static ClientRequest handle(ByteBuffer data, ClientConnection client) { int id = data.getShort(); //here we getting command id switch (id) { case 1: return new CM_ACCOUNT_LOGIN(data, client, id); case 2: return new CM_ENTER_GAME(data, client, id); //...... a lot of other commands here case 1000: return new CM_EXIT_GAME(data, client, id); } //if command unknown - logging it logUnknownRequest(client, id); return null;}我不喜欢大型交换机的结构。我的问题是:是否有一些方法可以重构此代码以使其更优雅?也许使用一些模式?另外,将来我想尝试在程序中使用依赖项注入(Guice),可以ClientRequest根据接收到的ID将其用于实例化实例吗?
添加回答
举报
0/150
提交
取消