我正在使用C++开发基于幻灯片的应用程序。
每张幻灯片都有一个幻灯片项目集合,可以
包括标题,按钮,矩形等项目。

这些项目中只有一部分支持填充,而其他一些则支持填充
别。

在这种情况下,实现幻灯片填充的最佳方法是什么?
我想到了两种方法:

  • 创建一个Fillable接口(interface),并为幻灯片项实现此接口(interface)
    支持填充,将所有与填充相关的属性保留在界面中。遍历幻灯片列表时,请动态播报它们
    放入Fillable,如果成功,请执行与fill相关的操作。
  • 制作一个fill类。将fill指针作为幻灯片项类的一部分,将其分配给
    对于那些支持填充的对象,将fill对象指向fill指针,对于其余支持填充的对象,请将其保留为null。给出一个函数GetFill,如果存在,它将返回项目的fill,否则返回NULL

  • 最好的方法是什么?我对性能和可维护性感兴趣。

    最佳答案

    我将两者结合起来。创建Fillable接口(interface),并将其作为GetFill方法的返回类型。这比动态转换方法更好。如果要支持接口(interface),则使用动态类型转换来查询接口(interface)要求实际的幻灯片项对象实现接口(interface)。但是,使用诸如GetFill之类的访问器方法,您可以选择为实现该接口(interface)的某些其他对象提供引用/指针。如果接口(interface)实际上是由此对象实现的,则也可以返回this。这种灵活性可以帮助避免类膨胀,并促进创建可被多个类共享的可重用组件对象。

    编辑:
    这种方法也可以很好地与空对象模式一起使用。您可以返回一个实现该接口(interface)的简单无操作对象,而不是为不支持Fillable的对象返回空指针。然后,您不必担心总是在客户端代码中检查空指针。

    关于c++ - 我应该如何设计一组相关分类,其中只有其中一些支持某种操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7335652/

    10-11 19:40
    查看更多