c++ - 不同的行为取决于数据

标签 c++ design-patterns inheritance polymorphism

<分区>

让我们做一个简单的例子。假设我有一组 Number 对象,它们可以是偶数奇数

假设我想遍历这个集合并处理每个元素。该过程取决于元素的类型:偶数奇数

示例:打印每个元素,这样:

  • 如果 Number 是偶数,我有“This is an even number.”

  • 如果 Number 是奇数,我有“This is an odd number.”

但是,我稍后可能会决定,我希望仅偶数打印“偶数”。

因此,正如我们所见,这可以通过使用虚函数,用继承多态来解决:

class Number {/*...*/};              // base class
class Even : public Number {/*...*/} // derived class
class Odd  : public Number {/*...*/} // derived class

但是,我如何才能在流程中提供灵 active ,以便稍后执行不同的行为,如上例所示?另外,是否有继承和多态的替代方法?因为我不想仅仅因为特定的计算/过程而创建继承树。

最初的问题是根据对象的类型执行不同的数学模型,并且数学模型对于给定类型的对象不是唯一的(因为我打印偶数的方式不是唯一的)。


编辑: 有趣的是,这篇文章以很难说清所问内容为由关闭。下面几个回答的作者似乎不同意这一点,因为他们都能理解并回答我要找的东西。

最佳答案

好吧,你可以使用 Strategy pattern : 有两个类 EvenStrategy 和 OddStrategy,将行为放入其中,然后在将它们插入集合时将它们添加到构造 orm 的 Even 和 Odd 类中。

关于c++ - 不同的行为取决于数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116009/

相关文章:

c++ - 自己的字符串用法

c++ - 这个代码正确吗?我的IT老师说错了

c++ - 抽象容器类和子类可以迭代吗?

c++ - 如何使用 Eigen 和 OpenMP 最大化 CPU 使用率

c++ - 构建一个包含 opencv 库的 cmake c++ 项目

java - 构建器模式精度

design-patterns - 应用程序开发的 MVC 模式中的 UI 代码在哪里?

c++ - 避免在消息传递中向下转型的设计模式

java - 继承与组合的区别

java - 这个东西在Java中叫什么?