Где объявить интерфейсы?

голоса
3

Я работаю над проектом с различными сборками (представьте себе принтер-модуль, изображения-модуль и т.д.). В этом проекте все интерфейсы объявляются в одном Интерфейсы сборки (представьте Interfaces.dll с интерфейсами IPrinterModule, IImagingModule и т.д.).

Так как я ковбой кодировщик;) Я должен спросить SO-сообщества, если это действительно лучшая практика и как это может быть сделано в лучшую сторону?

Задан 19/05/2009 в 14:44
источник пользователем
На других языках...                            


3 ответов

голоса
6

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

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

Ответил 19/05/2009 в 14:46
источник пользователем

голоса
1

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

Как IPrinterModule будет объявлен в сборке, который реализует

Ответил 19/05/2009 в 14:48
источник пользователем

голоса
4

Мы приняли аналогичный подход. Вы определенно хотите , чтобы отделить интерфейс от их (текущего) реализации, поэтому легко представить различные варианты реализации в будущем. Мартин Фаулер описал это как разлуке Интерфейсы шаблона.

Если интерфейсы имеют зависимости друг от друга (делает IPrinter вернуть IImageXXX?), То вы действительно нуждаются в них в той же сборке, чтобы избежать зависимости круговых сборки.

Ответил 19/05/2009 в 14:49
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more