C++ 用多态性解决代码重复问题
假设有一个基类和两个派生类:C++ 用多态性解决代码重复问题,c++,C++,假设有一个基类和两个派生类: struct Derive1 : public Base { func(TypeA arg) { // Common code part 1 specificFunc(arg); // Common code part 2 } specificFunc(TypeA arg) { // specific implementation } }; str
struct Derive1 : public Base
{
func(TypeA arg)
{
// Common code part 1
specificFunc(arg);
// Common code part 2
}
specificFunc(TypeA arg)
{
// specific implementation
}
};
struct Derive2 : public Base
{
func(TypeB arg)
{
// Common code part 1
specificFunc(arg);
// Common code part 2
}
specificFunc(TypeB arg)
{
// specific implementation
}
};
这两个派生类都有一个方法func()
,但参数类型不同。<代码>函数()/代码>的主体几乎是相同的,除了函数中间的某个地方,它们以不同的类型作为参数调用<代码>特定函数()/代码>。这两个派生类的specificFunc()
具有完全不同的实现
什么样的设计可以避免重复使用通用代码第1部分
和通用代码第2部分
提取
公共代码第1部分
和公共代码第2部分
不是一个选项,因为Func()中有控制逻辑
请尝试使用Derive1和Derive2都从基继承的事实。也许您可以找到一种方法,使“公共部分1”和“公共部分2”成为基函数的一部分。您可以将公共部分1
和公共部分2
分解出来,例如在普通函数或基类成员函数中。相反的是func()
的公共函数(模板),其中提供了specificFunc
作为参数。这是否意味着公共前/后代码不依赖于函数参数?@Klaus是的,这是正确的。但是调用specificFunc()
是在一个相当复杂的控制逻辑中。