我可以看到在这两个POJO中共享这些POJO的吸引力,但我认为最好的选择是在共享库中创建一组简单的DTO,并使用后端和android中的这些DTO。在两个项目中拥有相同的实际域对象的问题正是你所描述的 - 你在做后端类型的事情,不属于前端。
的客户一个简单的例子(其中一种具有一些交叉在与建筑商模式,所以你可以重新使用这些DTO的从一个建设者):
//this is your back end "proper" domain object
class Customer
{
<back end specifics>
...
Customer(CustomerDTO customer)
{
//set Customer fields from the dto
}
CustomerDTO toDTO()
{
CustomerDTO dto = new CustomerDTO();
dto.setName(this.getName());
dto.setAddress(this.getAddress());
...
return dto;
}
}
那么你的DTO是一个简单的版本在你的共享库中,不应该需要杰克逊注释,因为它会自动默认只包含你想要在客户端上的内容。正如你所说的,如果你确实需要一些杰克逊注解,那么在Android方面很好。这是DTO你会从后端发回:
public class CustomerDTO
{
private String mName;
public String getName()
{
return mName;
}
...
}
虽然仍然有重复结束(正确的域对象和DTO之间),如果你在它必须在后端改变任何东西它确实意味着也改变了DTO以便客户端看到,因此客户端保持同步,因为它使用相同的DTO。
感谢您的回答,但当Android应用向RESTful Web服务发出请求时正在使用JSON。我的问题是服务器和Android客户端代码中的底层POJO。我遗漏了JSON部分,因为我认为它不相关。 – user3409855 2014-09-04 09:34:42
您需要为客户端和服务器“克隆”这些POJO。不要忘记,Android编译POJO的方式与JDK不同,因此为什么JSON是两种平台的消息传输。 – 2014-09-04 10:23:18