可能我无法在这个问题上正确表达我的怀疑,但我仍会尝试。基本上我创建了一个简单的基于套接字的聊天程序,一切正常。但我认为从设计的角度来看,我已经做了很多补丁。
我在程序中使用了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的另一个类吗?所以它可以轻松识别?
答案 0 :(得分:2)
为什么不通过电汇发送Action
个对象?然后,您可以将这些Action
对象子类化为(比如说):
BanUserAction
RecordChat
AddUser
等。每个对象实例包含所需的数据,例如BanUser
包含要禁止的用户的名称。
您不需要使用instanceof
,因为每个对象都会实现一个通用的.act()
方法。然后你可以调用那个方法,而你就不必关心哪个对象已经传递给你了,因为对象本身将负责做什么(这是OO编程的核心原则) - 告诉对象为你做事)。
请注意,act()
方法可能需要将一些上下文传递给它,例如对包含聊天服务的引用。