gpt4 book ai didi

c++ - 我应该如何设计一组相关的类,其中只有一部分支持某种操作?

转载 作者:可可西里 更新时间:2023-11-01 15:55:55 26 4
gpt4 key购买 nike

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

这些项目中只有一些支持填充,而其他的不要。

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

  1. 创建一个接口(interface)Fillable并为幻灯片项目实现这个接口(interface)支持填充,保留所有与填充接口(interface)相关的属性。在遍历幻灯片项目列表时,dynamic_cast 它们进入Fillable,如果成功,则进行填充相关的操作。

  2. 创建一个fill 类。使 fill 指针成为幻灯片项目类的一部分,分配fill 对象指向那些支持填充的对象的 fill 指针,其余的保持空值。提供一个函数 GetFill,如果项目存在,它将返回 fill,否则返回 NULL

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

最佳答案

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

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

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

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