2010-12-02 41 views
0

创建Web服务时,我决定在客户端和Web服务之间交换业务对象(BO)。如何为Web服务中的可能扩展准备Business Objects

如果将来我要求扩展我的模型并在BO中放入一些新的属性(字段)并将它发送给客户端,那么最好的方法是什么?

所以基本上,每个BO可能有0..n个元字段。
每个元字段都是Key,Value like,其中键可以是从简单数据类型到其他BO的任何内容。

这是一个用于建模BO的小Java代码,我只需要确认我在正确的轨道上。

class AbstractBO{ 

//optional list of meta fields for future extension 
List<MetaField> metaFieldList; 

//setters. getters 

} 

---- 

class MetaField { 

private Object key; 
private Object value; 

// setters 
// getters 

} 

---- 

class MyBO extends AbstractBO { 

//BO specific fields 
private String name; 
... 


} 

--- 

TODAY 

class Person extends AbstractBO { 

private String name; 
private int age; 

//extend metaFieldList = null; 

} 


---- 

TOMORROW 

class Person extends AbstractBO { 

private String name; 
private int age; 

//list with new metafield 

} 

如何模拟人为明天的目的?

+0

您是否打算通过(例如SOAP/RMI)或更轻量级的(XML/JSON)发送实际对象? – 2010-12-02 13:00:07

回答

0

如果您的后续评论意味着您确实需要发送直接目标代码(可能是通过实施Serializable)而不是使用XML或JSON(这是您在实现Web服务时通常会执行的操作),那么我不知道你怎么能够实现你想要的。

当Java试图通过反序列化来重新创建对象时,它必须将输入数据与它认为该类的数据进行匹配。为了达到最佳实践目的,您应该实施serialVersionUID,并在每次修改课程时对其进行更改,以便在添加变量时,另一端的人员将无法错误地重建您发送的课程,如果他们有旧版本的代码。