0

在下面的类图中,您可以看到我当前的插件/扩展系统方法。我想为通用/全局事物提供扩展 API。但是公开的 API 应该只包含被引用对象的实际功能的一个子集。我的第一个想法是使用接口。这样做的问题是,一个邪恶的插件可能会将接口向下转换为内部类并搞砸事情。(我应该关心吗?)第二个想法是使用代理模式。目前我同时使用它们。我想这不是真的必要。但是考虑到二进制兼容性如何降低这里的复杂性?

在此处输入图像描述

4

2 回答 2

2

如果您想要不会以某种方式破坏您的程序的插件,那么您必须将这些插件作为单独的进程。然后插件在单独的内存空间中运行,并通过管道或套接字与您的应用程序通信。

于 2015-09-18T12:51:43.393 回答
1

我还应该关心吗?

不,C++ 的功能是帮助您编写正确的软件,而不是保护您免受恶意开发人员的侵害。这不是语言的工作。您的 API 的设计应确保正确性、全面性和易用性。

考虑到二进制兼容性如何降低这里的复杂性?

创建不从任何东西继承的 API 类。查看Leap Motion C++ API以获取如何正确执行此操作的灵感。

于 2015-09-18T16:43:26.150 回答