Практический вопрос о методах твердого программирования

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

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

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

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

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

0 ответов

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

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

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

Другие вопросы по тегам