C++ 不同的子类需要不同的参数

标签 c++ design-patterns inheritance

我正在寻找实现以下目标的最佳方法:

背景

我有一个带有 request() 虚拟方法的基类,不同的子类提供了执行请求的替代实现。我的想法是让客户端实例化这些子类之一,并将这些对象之一传递给子系统,该子系统将在需要时调用 request()。目标是让客户决定如何通过实例化所需的子类来处理请求。

问题

但是,如果选择了某个子类实现,它需要来自子系统的一条信息,这些信息最自然地作为参数传递给请求(即 request(special_info);)。但是其他子类不需要这个。是否有一种干净的方法来隐藏这种差异或可以在此处使用的适当设计模式?

谢谢

最佳答案

使基础 request() 方法将信息作为参数,并忽略不需要它的子类实现中的参数。

或者将 SubSystem 实例本身传递给处理程序,让处理程序从 SubSystem 获取它需要的信息(如果它不需要 SubSystem 的任何信息,则忽略它)。这将使设计更具可扩展性:您不需要在每次引入需要额外信息的新子类时传递额外的参数并重构所有方法。

关于C++ 不同的子类需要不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046270/

相关文章:

c++ - 努力使用指针数组对结构数组进行排序。 C++

c++ - 为什么每帧 4 像素上的 80 fps 对我来说滞后?

vb.net - 设计基于权限的安全模型

python - 基于类的 "Task"模块的好模式吗?

Java模式改变API接口(interface)名称?

javascript - 尝试实现一个简单的 -"subclassable"Array 子类

c++ - C++ 中的 2D 网格类实现

c++ - 列表中的 std::min_element 不返回最小值

java - 将一个或另一个子类分配给 Java 中的单个变量

scala - 试图找到更简单的方法来从特征中引用子类的类型