Как правильно обращаться к функциям DLL в приложении SDI?

У меня есть простое приложение SDI, которое работает довольно хорошо.

В последнее время я решил использовать некоторые функции, экспортируемые из DLL.

Все эти функции DLL работают со статическим буфером памяти (который приложение должно определить и использовать в вызовах функций) .

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

Я не уверен, как я должен обрабатывать вызов функций DLL. Должны ли MainFrame, Document и View иметь доступ к ним (и, следовательно, к буферу памяти)? Или они должны послать приложение, чтобы вместо этого сделать вызов функции?

1 ответ

Решение

Определите "правильно":)

Прежде всего, я думаю, что вам будет лучше, если вы соберете все вызовы в DLL и поместите их в одном месте. Тогда на самом деле не имеет значения, какой из них вызывает DLL (с ​​точки зрения интерфейса). Тем не менее, хорошей практикой является информирование только одной части системы о DLL и использование этого интерфейса. В этом случае это зависит от того, что на самом деле делает DLL, то есть над каким уровнем абстракции она стремится работать. Если это данные, относящиеся к Документу, именно Документ должен заботиться о связи. Он может даже использоваться View, если DLL выполняет вещи, связанные с View. Если DLL выполняет связанные с приложением вещи, она должна принадлежать приложению.

Просто задайте себе вопрос, что делает DLL, то есть какую роль она играет в вашем дизайне, и позвольте этому решить.

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