我想编写一个支持多种命令的程序。
为了使它通用且易于扩展以后的新命令,我想为每个命令编写一个类(具有自己的处理),并使用处理程序函数调用基"命令"类。
我知道在 Java 中有一个类可以帮助解决这样的事情 - 在流上决定它正在处理的类的类型。
CPP有类似的机制吗?如果是这样,它是什么以及如何使用它?
如果没有,我该怎么做才能使其易于扩展?
多谢。
您可以使用纯虚拟方法实现 Command 类。
http://www.exforsys.com/tutorials/c-plus-plus/c-pure-virtual-function-and-base-class.html
虽然你可以在 Java 中使用 Class 类来决定流程,但最好使用多态性 - 它使类无需修改即可扩展(SOLID 中的"O")。
C++也是如此。您可以使用 RTTI,但虚拟方法允许您使用命令扩展类而无需修改它。
摘自Gamma等人的"设计模式":
这种模式的关键是抽象的 命令类,它声明 用于执行操作的接口。在 它最简单的形式是这个接口 包括一个抽象的执行 操作。
你可以使用RTTI,但我建议你找到另一种方法。