gpt4 book ai didi

c++ - 有很多接口(interface)好还是只有一个接口(interface)好?

转载 作者:太空狗 更新时间:2023-10-29 23:47:47 30 4
gpt4 key购买 nike

我一直在研究这个插件系统。我以为我通过了设计并开始实现。现在我想知道我是否应该重新审视我的设计。我的问题如下:

目前在我的设计中我有:

  1. 接口(interface)类 FileNameLoader 用于加载我的应用程序需要加载的所有共享库的名称。即加载目录中的所有文件、加载 XML 文件中指定的所有文件、加载用户输入的所有文件等。

  2. 实际加载共享对象的接口(interface)类 LibLoader。此类仅负责在指定文件名后加载共享对象。加载共享库可能需要多种方式。即使用 RTLD_NOW/RTLD_LAZY....,检查 lib 是否已经加载等。

  3. 一个 ABC 插件,它在提供句柄后将我需要的函数从句柄加载到库。这有很多方式可以改变。

  4. 一个接口(interface)类 PluginFactory,它创建 Plugin

  5. 一个 ABC PluginLoader,它是管理一切的母类。

现在,我的问题是我觉得 FileNameLoaderLibLoader 可以放在 Plugin 中。但这意味着如果有人只想将 RTLD_NOW 更改为 RTLD_LAZY,他将不得不更改 Plugin 类。另一方面,我觉得这里的课太多了。请提供一些意见。如果需要,我可以发布接口(interface)代码。提前致谢。

编辑:

经过深思熟虑,我得出的结论是接口(interface)越多越好(至少在我的场景中是这样)。假设FileNameLoaderx个实现,LibLoadery个实现,z个实现插件。如果我将这些类分开,我必须编写 x + y + z 实现类。然后我可以将它们组合起来以获得任何可能的功能。另一方面,如果所有这些接口(interface)都在 Plugin 类中,我将不得不编写 x*y*z 实现类来获得所有可能的更大的功能比 x + y + z 假设接口(interface)至少有 2 个实现。这只是它的一方面。另一个好处是,接口(interface)越多,接口(interface)的用途越清晰。至少我是这么认为的。

最佳答案

我的 C++ 项目通常由实现一个或多个接口(interface)的对象组成。

我发现这种方法有以下效果:

  • 界面的使用强化了您的设计。
  • (仅代表我的意见)确保更好的程序设计。
  • 相关功能被分组到接口(interface)中。
  • 如果您的接口(interface)实现不完整或不正确,编译器会通知您(有利于接口(interface)的更改)。
  • 您可以传递接口(interface)指针而不是整个对象。

传递接口(interface)指针的好处是您只公开其他对象所需的功能。

COM 大量使用接口(interface),因为其模块化设计对 IPC(进程间通信)很有用,可促进代码重用并实现向后兼容性。

Microsoft 广泛使用 COM 并将其操作系统和最重要的 API(DirectX、DirectShow 等)基于 COM,出于这些原因,虽然它不是最容易获得的技术,但 COM 不会很快消失。

这些对您自己的程序有帮助吗?由你决定。如果您要将大量代码转换为 COM 对象,这绝对是正确的方法。

您通过我提到的接口(interface)获得的其他好处 - 自行判断它们对您的用处。就我个人而言,我发现接口(interface)是必不可少的。

关于c++ - 有很多接口(interface)好还是只有一个接口(interface)好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958978/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com