Как правильно обращаться к функциям DLL в приложении SDI?
У меня есть простое приложение SDI, которое работает довольно хорошо.
В последнее время я решил использовать некоторые функции, экспортируемые из DLL.
Все эти функции DLL работают со статическим буфером памяти (который приложение должно определить и использовать в вызовах функций) .
Факт в том, что некоторые функции DLL должны вызываться, когда в View происходят определенные вещи.
Я не уверен, как я должен обрабатывать вызов функций DLL. Должны ли MainFrame, Document и View иметь доступ к ним (и, следовательно, к буферу памяти)? Или они должны послать приложение, чтобы вместо этого сделать вызов функции?
1 ответ
Определите "правильно":)
Прежде всего, я думаю, что вам будет лучше, если вы соберете все вызовы в DLL и поместите их в одном месте. Тогда на самом деле не имеет значения, какой из них вызывает DLL (с точки зрения интерфейса). Тем не менее, хорошей практикой является информирование только одной части системы о DLL и использование этого интерфейса. В этом случае это зависит от того, что на самом деле делает DLL, то есть над каким уровнем абстракции она стремится работать. Если это данные, относящиеся к Документу, именно Документ должен заботиться о связи. Он может даже использоваться View, если DLL выполняет вещи, связанные с View. Если DLL выполняет связанные с приложением вещи, она должна принадлежать приложению.
Просто задайте себе вопрос, что делает DLL, то есть какую роль она играет в вашем дизайне, и позвольте этому решить.