c++ - 避免公共(public)类中重复代码

标签 c++ design-patterns inheritance

我有一个名为

的回调函数
MyCallBack(int type)

我有 3 个从 A 派生的类 B、C 和 D,它们具有通用方法名称 目前我的代码是这样的

MyCallBack(int type){
if(type == 1 ){
B b;
b.perform();
}else if(type==2) {
C c;
c.perform();
}else if(type ==3){
D d; 
d.perform();
}

有没有办法可以减少这段代码,例如

MyCallBack(int type){
Common object(type);
object.perform();
}

最佳答案

基本上,您需要的是多态性。

所有类 BCD 都应从抽象类(例如 SuperBase)派生,并带有纯虚拟方法perform()
您的代码应该仅使用指向 SuperBase 的指针,其中包含实际具体类对象的地址。
一旦你完成了这个,根据所指向的对象的实际类型,将调用适当类中的方法。

这种方法的优点是没有硬编码的类型检查,并且使用 Open Closed principle 的松散耦合设计具有灵活性。 .

关于c++ - 避免公共(public)类中重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690118/

相关文章:

design-patterns - 应用扼杀器模式的经验和想法

javascript - 如何使用 JavaScript 对象文字进行继承?

c++ 如何将模板应用于模板类的子/友元?

java - 解释变量隐藏在这个 Java 代码中是如何工作的

c++ - 为什么我们需要Prim算法中的优先级队列

c++ - 保护生成的源文件

c++ - 是否可以从格式字符串中检索 "width"

oop - 数据拉取与推送 OOP 方法

java - 使用模式在 Jasper Reports 中格式化货币

c++ - 工厂方法模式使用继承,而抽象工厂模式使用组合如何?