Като се има предвид кодов проект, който трябва да се придържа към принципа на SoC чрез внедряване на слабо свързани слоеве, наличие на IoC контейнер и т.н., например просто решение ASP.NET MVC, което е разделено на следните сборки:
- Сглобяване на приложение+пространство от имена
- Модел сборка+пространство от имена (съдържа конкретно хранилище за достъп до DB данни)
и когато конкретно хранилище в сборката на модела трябва да реализира общ интерфейс IMyBusinessRepository
, в коя сборка бихте поставили този интерфейс?
1) Ако поставите този интерфейс в сборката Модел, шансовете са, че ще бъде невъзможно да замените тази сборка с друга (поне ако има различно пространство от имена), без да модифицирате кода на < em>Приложение монтаж. Също така, алтернативна IMyBusinessRepository
реализация, намираща се в различен асембли, би трябвало да препраща към оригиналната (Argh!)
2) Ако го поставите в сборката Приложение, ще бъде невъзможно да използвате сборката Модел в други проекти, без да препращате към сборката Приложение ( Ааа!)
3) Или бихте създали отделна обща сглобка само за този интерфейс и по този въпрос за всеки общ интерфейс или набор от интерфейси? (Ара?)
За да обобщим, сглобяването на X трябва да може лесно да се сменя в приложение A (само чрез промяна на препратка) и да се използва повторно в приложения B, C, D.