我的系统成功地将对象从客户端传递到 servlet。然而它很原始,因为它是为了迎合 Java 1.1 而构建的。它传递的消息对象由一个 int (代表大约七十种类型之一)和一个需要解析的令牌字符串组成(令牌可能包含一个列表、对象列表等)。不好!

所以,我希望将其重构为 Java 1.5。使用枚举而不是整数无疑是一种改进,但我不确定如何发送消息的其余部分。创建七十个不同的类来表示每种类型肯定不是正确的方法。

关于我应该如何重构这个的任何指示?

有帮助吗?

解决方案

无需创建不同的类来表示每种类型的消息。您可以使用所需的属性创建一个消息类。像这样的东西:

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

等等。

其他提示

您可能想使用序列化对象。

它们旨在轻松地通过网络传递。

在您的情况下,您只需要一个序列化的“消息”类。然后您可以读取它并将其写入流。

这里 是有关使用序列化对象的教程。那里有很多。

您还可以使用以下方法将对象序列化为 XML 并再次返回对象 流媒体.

第一个问题:为什么你觉得需要做出改变?是否是因为当前系统不支持您计划添加的某些功能?还是只是为了打扫而进去打扫?如果是后者,我强烈建议让睡虫继续撒谎。

第二个问题:我假设这是一个小程序。您会计划使用不同的前端吗?或者将此服务器公开为通用服务?如果没有,那么我回到第一个问题。如果是,那么您几乎肯定希望避免特定于语言的序列化。

如果您计划将其公开为服务,那么遵循一些“标准”服务协议是一个好主意。REST 可能是最简单的 POST-ing XML 有效负载。您也可以使用 SOAP,但我一直认为这样做太过分了。

或者,您可以使用标准 URL 编码的 POST ...这应该比将所有内容都包装在 XML 中更容易实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top