如何识别套接字数据的类型?

时间:2010-06-06 16:36:58

标签: java sockets

可能我无法在这个问题上正确表达我的怀疑,但我仍会尝试。基本上我创建了一个简单的基于套接字的聊天程序,一切正常。但我认为从设计的角度来看,我已经做了很多补丁。

我在程序中使用了ObjectInputStream和ObjectOutputStreams。我想问的问题是如何识别我通过网络发送的不同类型的数据?如果它是简单的String类型对象,我直接添加到List<String> chatMessages。现在如果想要禁止某些用户我创建了另一个类: -

public class User{
    private String name;
    private String id;
    //getters and setters
}

此User类对我来说并不重要,但我只创建它以正确识别动作。因此,如果我收到instanceOf用户,我可以确定某些用户将被禁止。这样我就不用硬编码字符串了。我的意思是首先我想发送类似"Banned User :" + userName的东西,然后我用来检查字符串是否与“禁止用户:”一起开始,然后我采取一些行动:p。我已经创建了一个User类,但这对我的程序来说并不重要。

我想知道直接发送字符串是好方法还是为每个好的操作创建一个类。如果我不清楚请告诉我。如果我有数百个动作,我必须创建数百个类,所以我可以通过instanceOf检查?现在说如果我打算创建一个类似BUZZ的设施,可以在yahoo messenger中使用。我应该再创建一个名为BUZZ的另一个类吗?所以它可以轻松识别?

1 个答案:

答案 0 :(得分:2)

为什么不通过电汇发送Action个对象?然后,您可以将这些Action对象子类化为(比如说):

  1. BanUserAction
  2. RecordChat
  3. AddUser
  4. 等。每个对象实例包含所需的数据,例如BanUser包含要禁止的用户的名称。

    您不需要使用instanceof,因为每个对象都会实现一个通用的.act()方法。然后你可以调用那个方法,而你就不必关心哪个对象已经传递给你了,因为对象本身将负责做什么(这是OO编程的核心原则) - 告诉对象为你做事)。

    请注意,act()方法可能需要将一些上下文传递给它,例如对包含聊天服务的引用。