我的系统成功地将对象从客户端传递到servlet。然而,它是原始的,因为它是为迎合Java 1.1而构建的。它传递的消息对象包含一个int(表示大约七十种类型之一)和一个需要解析的标记字符串(标记可能包含一个列表,一个对象列表等)。不好!</ p>
所以,我正在考虑将其重构为Java 1.5。使用枚举而不是int肯定是一种改进,但我不确定如何发送其余的消息。创建七十个不同的类来表示每种类型肯定不是正确的方法。
关于我应该如何重构这个的任何指示?
答案 0 :(得分:3)
答案 1 :(得分:2)
无需创建不同的类来表示每种类型的消息。您可以使用所需的属性创建一个消息类。像这样:
public class Message implements Serializable{
private Long id;
private String msgText;
//other necessary properties
public Message(){
this(0, "default message");
}
public Message(Long id, String msgText){
setId(id);
setMsgText(msgText);
//etc
}
//getters and setters
}
然后根据需要创建对象。例如:
Message m1 = new Message(9, "The Eagle has landed");
//serialize m1 to server
Message m2 = new Message(27, "The Wren has landed");
//serialize m2 to the server
等等。
答案 2 :(得分:0)
您还可以使用xStream将对象序列化为XML并再次返回对象。
答案 3 :(得分:0)
第一个问题:为什么你觉得需要做出改变?是因为当前系统不支持您计划添加的某些功能吗?或者你只是想进去清理以便清洁?如果是后者,我强烈建议留下睡觉的小虫。
第二个问题:我假设这是一个applet。你有没有打算使用不同的前端?或者将此服务器公开为通用服务?如果不是,那么我回到第一个问题。如果是,那么你几乎肯定想要远离语言特定的序列化。
如果您打算将其作为服务公开,那么遵循一些“标准”服务协议是个好主意。 REST可能是最简单的POST有效负载。你也可以做SOAP,但我一直认为这有点过分。
或者,您可以使用标准的URL编码POST ...这比使用XML包装所有内容更容易实现。