我的处理程序设计好吗?

Is my handlers design fine?

所以我一直在用 netty 写一个服务器,我没有用它写任何其他东西,所以我想知道我的管道方法是否正确。

我在服务器和客户端中有 2 个默认处理程序,ObjectEncoder 和 Decoder,我想为我添加到服务器的每个功能创建一个新的处理程序,例如我有一个 UserAuthenticationHandler、UserActionHandler,它们中的每一个都处理不同的数据包和将它们传递给相应的 classes。

所以这是我想到的一种方法,另一种是针对每个功能的一个处理程序,这意味着我将不得不编写一个大开关来处理所有这些功能。
可以使用第一种方法还是应该继续使用第二种方法?

第一种方法示例

public class UserAuthenticationHandler extends AbstractPacketHandler {
    private User user;

public UserAuthenticationHandler(User user, DatabaseConnection databaseConnection) {
    this.user = user;
    new UserAuthenticator(databaseConnection);
}

@Override
protected void handlePacket(Packet packet) {

    switch (packet.packetType){
        case "START_LOGIN":
            UserAuthenticator.startLoginProcess(packet, user);
    }
}

@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
    super.channelActive(ctx);
}

public User getUser(){
    return user;
}

}

第二种方法

想象一下第一个,但是每个 class.

都有 50 多个 switch case 和大得像地狱的构造函数

一般来说,如果有意义的话,我会建议使用不同的处理程序,因为这些处理程序将作用于不同的消息。从您的解释来看,这似乎并非如此。我认为在您的情况下,您应该只拥有解码器/编码器,然后是一个处理程序,它可以分派到应用程序的正确 "business logic" 界面。