Небольшой вопрос проектирования Java здесь (для чего это важно в контексте веб-приложения JEE).java inheritance vs generics
Предположим, у меня есть REST API с двумя операциями: GET
и POST
на тех же ресурсах. Оттуда построены два класса Джексона, представляющие поля ввода запроса. Эти классы различаются, потому что параметры запросов немного отличаются.
Допустим, эти два класса называются 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...
}
В бизнес-уровне моего приложения, я должен кодировать вспомогательный метод (для каждой операции REST), который будет заполнить еще один компонент, используя общие поля каждого объекта. Реализация этого метода точно такая же для операций GET и POST.
Единственное, что меняется, - это то, что в случае операций GET
я должен пройти класс GetRequest
, а для POST я должен передать PostRequest
.
Так что мой вопрос:
Должен ли я работать на модели данных и использовать наследование или я должен использовать генериков в моем хелперов методе? Какой из них будет иметь больше смысла и будет более эффективным и устойчивым к будущей эволюции приложения (в случае, если, например, добавлены дополнительные операции в эти ресурсы)?
Сигнатура моих методов (для помощника самотестирования):
public IDaoRequestBean buildDaoRequest(final PostRequest request);
И помощнике ГЕТ:
public IDaoRequestBean buildDaoRequest(final GetRequest request);
чтения [это] (http://stackoverflow.com/questions/2642598/generics-vs-inheritance-when-no-collection-classes-are-involved) –