Должен ли я дублировать модель сущности? - PullRequest
0 голосов
/ 25 апреля 2018

В моем приложении есть сущности. но некоторые объекты должны реализовать интерфейс. например, У меня есть «Курс», «Урок» сущностей. Я создал интерфейсы "CourseService", "LessonService" и "CourseServiceImpl", "LessonServiceImpl". Но проблема в том, что мой «Курс» и «Урок» должны реализовывать «Платный» интерфейс. что я должен делать? дублировать мои объекты?

Спасибо,

1 Ответ

0 голосов
/ 25 апреля 2018

Не совсем.Я предполагаю, что у вашего Payable интерфейса есть метод pay().Реализуйте это в обеих ваших сущностях.Если реализации разные, у вас все хорошо.Если они совпадают, вы можете извлечь его в другой объект и инкапсулировать в Course и Lesson.Или нет - нет ничего плохого в дублировании кода как такового - только в коде, который трудно изменить и расширить.У нас есть принцип СУХОГО - не повторяйся.Я предпочитаю пить - повторить, если необходимо, Кей?:) (Хотя не уверен, кто это придумал).

В любом случае, я бы порекомендовал иметь как можно меньше кода в сервисах.У вас будет более высокая сплоченность , если ваши сущности смогут выполнять свои обязанности самостоятельно и не будут подвергать свою внутреннюю структуру какой-либо службе.Мартин Фаулер объясняет это очень хорошо .Также это .

...