Это скорее теоретический вопрос, чем практический.
У нас есть многоуровневая архитектура, своего рода:
DTO1 должно иметь немного больше данных, чем DTO2, и именно дополнительную строку. Итак, вопрос в том, должен ли DTO1 расширять DTO2 или инкапсулировать DTO2? В первом случае код в UI_JavaHandler будет:
Код: Выделить всё
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1);
}
А во втором случае:
Код: Выделить всё
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1.getDto2());
}
Расширение Java DTO2 работает нормально, но мне не нравится идея использовать расширение только для добавления новых данных. Я привык использовать расширение для добавления нового поведения (например, Animal расширяется с помощью Dog и Cat). Поскольку тот же эффект может быть использован при агрегировании, нам не следует использовать расширение, но у меня нет веских аргументов против такого (ab)использования(?).
С другой стороны, я могу быть совершенно не прав.
Что вы думаете по этому поводу? Спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/113 ... nother-dto