好的,我被任命负责RESTful架构中服务器和客户端(内部使用)部分的工作(使用restlet)。
我们有一个暴露Post操作的资源。以下是一个简化版本:
public class UserResource {
@Post
public Representation create(UserRegistration registration) {
SomeService.getInstance().createUser(registration);
return new XstreamRepresentation(new RegistrationResponse(registration.getUniqueCode()););
}
最近几个月,我们一直是唯一使用这些服务的人,因此域对象在客户端和服务器端之间共享……一切都很顺利。
现在我们需要记录这些资源并让其他客户端使用它们,一些“问题”已经出现,这让我觉得这个API可能有点过于复杂。
例如,这个Post服务。内部方法接受复杂类型UserRegistration。
public class UserRegistration implements Serializable {
private Profile profile;
private Boolean someBooleanProperty;
public UserRegistration(Profile profile) {
this(profile, true);
}
public Profile getProfile() {
return profile;
}
public boolean isSomeBooleanProperty() {
return someBooleanProperty;
}
}
这句话中的另一个复杂对象是Profile。
public class Profile {
private String nickname;
private String email;
private String password;
private String firstname;
private String lastname;
private Date birthDate;
private String phone;
private Address address;
private GenderType gender;
private String subscriptionSite;
private Date privacyAcceptanceDate;
private Date subscriptionDate;
private String activationCode;
private String socialSecurityNumber;
...
这里使用了许多复杂类型,这让我感到困扰。
我不知道该如何记录这些复杂对象(除了列出这些复杂对象的内部属性的长长列表),或者我已经迷失了方向。
我的问题是: 我是否需要简化? 这种架构设计很糟糕吗? 一些builder方法能解决问题吗?