deo*_*ngh 10 c++ design-patterns
我正在使用C++开发基于幻灯片的应用程序.每张幻灯片都有一个幻灯片项集合,其中包括标题,按钮,矩形等项目.
只有其中一些项目支持填充,而其他项目则不支持填充.
在这种情况下,为幻灯片项目实现填充的最佳方法是什么?以下是我想到的两种方式:
创建一个界面Fillable并为支持填充的幻灯片项实现此界面,保持与填充界面相关的所有属性.迭代幻灯片项列表时,将它们dynamic_cast放入Fillable,如果成功,则执行与fill相关的操作.
做一个fill类.使fill指针成为幻灯片项类的一部分,将fill对象分配给
fill支持填充的那些对象的指针,对于其余对象,将其保持为空.给一个函数GetFill,fill如果它存在则返回该项,否则返回NULL.
对此最好的方法是什么?我对性能和可维护性感兴趣.
bsh*_*lds 10
我会把两者结合起来.创建您的Fillable界面并使其成为您GetFill方法的返回类型.这比动态演员方法更好.使用动态强制转换来查询接口要求实际的幻灯片项对象实现接口(如果要支持它).GetFill但是,使用类似的访问器方法,您可以选择提供指向实现该接口的其他对象的引用/指针.this如果接口实际上是由此对象实现的,您也可以返回.这种灵活性可以帮助避免类膨胀,并促进创建可由多个类共享的可重用组件对象.
编辑:
这种方法也适用于空对象模式.Fillable您可以返回一个实现该接口的简单无操作对象,而不是为不支持的对象返回空指针.然后,您不必担心始终在客户端代码中检查空指针.