Java 如何识别套接字数据的类型?
也许我不能恰当地表达我对这个问题的怀疑,但我还是会努力的。基本上,我创建了一个简单的基于套接字的聊天程序,一切正常。但是我想我已经从设计的角度在它上面做了很多补丁 我在程序中使用了ObjectInputStream和ObjectOutputStreams。我想问的问题是,如何识别通过网络发送的不同类型的数据?假设它是我直接添加到聊天信息列表中的简单字符串类型对象。现在,如果要禁止某些用户,我创建了另一个类:-Java 如何识别套接字数据的类型?,java,sockets,Java,Sockets,也许我不能恰当地表达我对这个问题的怀疑,但我还是会努力的。基本上,我创建了一个简单的基于套接字的聊天程序,一切正常。但是我想我已经从设计的角度在它上面做了很多补丁 我在程序中使用了ObjectInputStream和ObjectOutputStreams。我想问的问题是,如何识别通过网络发送的不同类型的数据?假设它是我直接添加到聊天信息列表中的简单字符串类型对象。现在,如果要禁止某些用户,我创建了另一个类:- public class User{ private String name;
public class User{
private String name;
private String id;
//getters and setters
}
这个用户类到目前为止对我来说并不重要,但我创建它只是为了正确识别操作。因此,如果我收到一个用户的实例,我可以确定某些用户将被禁止。这样我就不必硬编码字符串了。我的意思是,首先我想发送类似于“禁止的用户:”+userName
,然后我用“禁止的用户:”检查字符串是否开始,然后我采取一些措施:p。我创建了一个用户类,但在我的程序中它对我来说并不重要
我想知道直接发送字符串是一种好方法,还是为每个好的操作创建一个类。如果我不清楚,请告诉我。如果我有数百个操作,我是否必须创建数百个类才能通过instanceOf进行检查?现在说,如果我计划创建一个类似于BUZZ的功能,可以在yahoo messenger中使用。我是否应该再次创建另一个名为BUZZ的类?所以很容易识别 为什么不通过网络发送操作对象?然后,您可以将这些Action
对象子类化为(例如):
BanUserAction
RecordChat
AddUser
每个对象实例都包含所需的数据,例如BanUser
包含要禁止的用户的名称
您不需要使用instanceof
,因为每个对象都将实现一个公共的.act()
方法。然后,您可以调用该方法,而不必关心传递给您的是哪个对象,因为对象本身将负责做什么(这是OO编程的核心原则-告诉对象为您做事情)
请注意,act()
方法可能需要向其中传递一些上下文,例如对包含聊天服务的引用