Является ли контейнер IoC излишним для очень простой структуры - PullRequest
3 голосов
/ 10 декабря 2011

Я создаю библиотеку, которая интегрирует наш продукт с другим сторонним продуктом.

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

С этой целью реальный код, который будет возвращать конкретный экземпляр объекта, взаимодействующего со сторонним API, должен принять решение о том, «какую реализацию выбрать».

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

Должен ли я использовать контейнер IoC в этом случае, или я должен использовать шаблон фабричного метода и сам его кодировать? (используйте отражение для создания объекта и т. д.).

Какие плюсы и минусы для этого? Я что-то пропустил?

Ответы [ 3 ]

3 голосов
/ 10 декабря 2011
1 голос
/ 10 декабря 2011

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

Я пользователь Castle, и чертовски легко добавить Castle с NuGet, тогда простосоздайте новый WindsorContainer () в автозагрузке и зарегистрируйте свои интерфейсы и класс.

Это все равно, что спросить, не слишком ли сложно TDD сделать простое приложение.Вы должны всегда (если можете) TDD приложение и использовать интерфейсы поверх конкретных в ваших классах.IoC слишком прост в настройке, так как вы добавляете всего несколько строк кода, так почему бы и нет?позже будет намного сложнее, если вы изначально не использовали контейнер IoC и у вас есть интерфейсы и обновленные классы по всему проекту, чтобы организовать их все обратно в контейнер IoC.

1 голос
/ 10 декабря 2011

Контейнер IoC кажется излишним для вашей проблемы.Если у вас есть только одна зависимость для внедрения, делать это через файл конфигурации должно быть просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...