Это хорошая идея создать интерфейс для каждого доменного объекта?

StackOverflow https://stackoverflow.com/questions/2812005

Вопрос

Я просто искал исходный код существующего проекта, который использует Nibernate. И обнаружил, что есть интерфейсы, созданные для каждого классов сущности. Например Icustomer. для Клиент сорт. Мне просто интересно, что может быть преимуществом этого шаблона как Icustomer. Содержит преимущественно свойства и очень мало методов.

Это было полезно?

Решение

Я бы сказал нет. Интерфейсы отдельного поведения от реализации, так что последнее может быть заменено, не затрагивая клиентов интерфейса.

Я не вижу необходимости в интерфейсах, если ваши доменные объекты не потребуют различных реализаций. Только ввести их только в том случае, если необходимы динамическое поколение прокси или аспекты или изменяющиеся реализации.

Другие советы

Я не согласен с предыдущими комментариями ... хотя, в сочетании с образцами, такими как инверсия управления (IOC) и инъекция зависимости, он делает изоляцию таких слоев друг от друга намного проще. Это упрощает тестирование подразделения, издевательства, а также может привести к более свободным связанным архитектурам. Это все еще может быть достигнуто без интерфейсов, хотя вам нужно убедиться, что вы не закрываете свои классы и делаете участников виртуальными, поэтому вы все еще можете издеваться, генерировать перехватываемые прокси, и т. Д., Наконец, использование интерфейсов заставляет вас отбросить предположения, связанные с любым одна конкретная реализация и вместо этого сосредоточены на договоре, представленном определением интерфейса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top