Это хорошая идея создать интерфейс для каждого доменного объекта?
-
26-09-2019 - |
Вопрос
Я просто искал исходный код существующего проекта, который использует Nibernate. И обнаружил, что есть интерфейсы, созданные для каждого классов сущности. Например Icustomer. для Клиент сорт. Мне просто интересно, что может быть преимуществом этого шаблона как Icustomer. Содержит преимущественно свойства и очень мало методов.
Решение
Я бы сказал нет. Интерфейсы отдельного поведения от реализации, так что последнее может быть заменено, не затрагивая клиентов интерфейса.
Я не вижу необходимости в интерфейсах, если ваши доменные объекты не потребуют различных реализаций. Только ввести их только в том случае, если необходимы динамическое поколение прокси или аспекты или изменяющиеся реализации.
Другие советы
Я не согласен с предыдущими комментариями ... хотя, в сочетании с образцами, такими как инверсия управления (IOC) и инъекция зависимости, он делает изоляцию таких слоев друг от друга намного проще. Это упрощает тестирование подразделения, издевательства, а также может привести к более свободным связанным архитектурам. Это все еще может быть достигнуто без интерфейсов, хотя вам нужно убедиться, что вы не закрываете свои классы и делаете участников виртуальными, поэтому вы все еще можете издеваться, генерировать перехватываемые прокси, и т. Д., Наконец, использование интерфейсов заставляет вас отбросить предположения, связанные с любым одна конкретная реализация и вместо этого сосредоточены на договоре, представленном определением интерфейса.