Практический вопрос о методах программирования SOLID - PullRequest
0 голосов
/ 01 декабря 2018

Практический вопрос о принципе инверсии зависимости:

Мы хотим построить наши системы во многих библиотеках или библиотеках DLL.

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

Да, конечно, конкретный класс подключен и предоставляется фабрикой ...

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

1 Ответ

0 голосов
/ 10 декабря 2018

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

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

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

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