我正在使用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/