Где должен “физически живые” интерфейсы?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

5
задан Jason Bunting 11 September 2008 в 19:32
поделиться

4 ответа

Поместите свои объекты области и интерфейсы в отдельном "доменном" блоке.
Этот блок ни на что никогда не должен ссылаться кроме базовых блоков .NET.

Таким образом, Вы получаете чистое разделение от своего домена/модели услуг и своей реализации.

Править:
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

7
ответ дан 13 December 2019 в 19:39
поделиться

Я предпочитаю сохранять наиболее распространенные или простые реализации интерфейса в подпапке (и пространство имен) после названия интерфейса.

\project\
\project\IAppender.cs
\project\Appender\
\project\Appender\FileAppender.cs
\project\Appender\ConsoleAppender.cs

Если я расширяю этот класс вне проекта. В специальном проекте повторите папки/пространство имен так же.

\specialproject\
\specialproject\Appender\
\specialproject\Appender\MemoryAppender.cs
1
ответ дан 13 December 2019 в 19:39
поделиться

Я не поместил бы интерфейсы в отдельный блок только ради него. Однако, если интерфейсы принимают участие в какой-либо форме IPC или архитектуры расширяемости затем, часто имеет смысл давать им их собственный блок.

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

3
ответ дан 13 December 2019 в 19:39
поделиться

В проекте я продолжаю работать прямо сейчас, интерфейсы и связанные базовые классы входят в блоки, которые логически разделены между функциями. Реализации этих поставщиков и классов входят в базовый блок. Так как идея - это люди, которые используют наш API, может сослаться на больше или один из API dlls ясным и логическим способом.

Для малых приложений не нужен этот вид разделения. Но, неважно, где я сохраняю интерфейсы, я сохранил бы их в том же пространстве имен как любые базовые классы.

0
ответ дан 13 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: