【发布时间】:2016-07-21 17:27:34
【问题描述】:
这里有一点 Java 设计问题(重要的是它在 JEE Web 应用程序的上下文中)。
假设我有一个带有两个操作的 REST API:GET 和 POST 在相同的资源上。从那里,使用 Jackson 构造两个类来表示请求的输入字段。这些类是不同的,因为请求的参数略有不同。
假设这两个类被命名为 GetRequest 和 PostRequest。
这两个类包含一组通用字段。以及属于每个类的一组字段。例如:
public class GetRequest {
// common fields
private String callerId;
private String userId;
// non-common fields
private boolean withLinkedServices;
// Constructors, egals, hasCode, toString, getters,setter etc...
}
对于 PostRequest 类
public class PostRequest {
// common fields
private String callerId;
private String userId;
// non-common fields
private List<ServicesBean> services;
// Constructors, egals, hasCode, toString, getters,setter etc...
}
在我的应用程序的业务层中,我必须编写一个 helper 方法(针对每个 REST 操作),该方法将使用每个对象的公共字段填充另一个 bean。对于 GET 和 POST 操作,此方法的实现完全相同。
唯一不同的是,对于 GET 操作,我必须通过 GetRequest 类,而对于 POST,我必须通过 PostRequest。
所以我的问题是:
我应该使用数据模型并使用继承还是应该在我的辅助方法中使用泛型?哪一个更有意义、更高效、更能适应应用程序的未来发展(例如,如果在该资源上添加更多操作)?
我的方法的签名是(对于 POST 的助手):
public IDaoRequestBean buildDaoRequest(final PostRequest request);
对于 GET 的助手:
public IDaoRequestBean buildDaoRequest(final GetRequest request);
【问题讨论】:
-
阅读this
标签: java generics inheritance