0

我正在开发一个具有客户端和服务器的应用程序。当客户端收到一个数据包时,它需要通知任何屏幕对象需要什么数据包(例如,登录屏幕只对有关登录的数据包感兴趣)。

目前我已经设置了系统,因此所有屏幕对象都会收到任何即将到来的数据包的通知。然后每个屏幕检查通过的数据包是否适用于它自己。

我想知道是否有人知道任何方法,而不是每个屏幕对象都监听每个数据包,网络侦听器只是发送屏幕正在侦听的数据包。(这样我就不必有 100 个 if 语句来检查通过的数据包是否是 a、b、c、d、e、f)。我可以通过为每个数据包实现一个新事件来做到这一点,但这可能会很快变得混乱。

对此事的任何帮助都会令人惊叹。

4

1 回答 1

1

这可能是您的问题的解决方案。创建接口包:

public interface Packet {
  public void callListener();
}

为每个数据包创建一个实现Packet的类。例如,要管理登录数据包,您可以创建一个LoginPacket类:

public class LoginPacket implements Packet{
  public void callListener() {
    ListenerLogin.notify(this);
            //you can add additional Listeners

  } 
}

在主类Reader中,读取数据包时调用特定的侦听器:

public class Reader{
  public void parse(Packet p) {
   p.callListener();
}
}

这样,在parse方法中就不需要任何 if/else 语句。

于 2013-04-02T11:36:54.493 回答