为了账号安全,请及时绑定邮箱和手机立即绑定

基于请求标识符的客户请求工厂

基于请求标识符的客户请求工厂

犯罪嫌疑人X 2021-04-08 14:15:39
在我的程序中,我正在通过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将其用于实例化实例吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信