Допустим, у вас есть трехуровневое приложение с уровнями пользовательского интерфейса, служб и репозитория для простого приложения, скажем, для сохранения адресов.
Если AddressService имеет интерфейс IAddressService, где этот интерфейс принадлежит? Я знаю, что «в адресной службе» может показаться очевидным ответом, но если он находится в адресной службе, то, похоже, он лишает смысла наличие интерфейса, так что любая сервисная библиотека может быть заменена, пока она реализует IAddressService.
(в частности, в проблемном пространстве .net, но, вероятно, оно более общее, поэтому оно имеет теговую архитектуру)