解决重复代码的方案

时间:2017-08-06 09:01:26

标签: oop

在我的一次采访中,我被问到了这个问题。 可以说我有基类“A”。有四个类“B”,“C”,“D”,“E”,它们来自“A”。现在我有一种方法在“D”和“E”类中很常见。我可以编写此方法的最小方法是什么,只有类“D”和“E”才能使用它们。 如果我在基类中编写它们,那么它将无理由地显示为“B”和“C”类。

1 个答案:

答案 0 :(得分:0)

您从 A 派生出一个中间类,请为简单DECommon调用它,这将为DE提供此常用方法。接下来从中获取DE

class A {
}

class DECommon : public A {
     public:
        virtual void newMethodDE() {
            // DO YOUR MAGIC HERE
        }
}

class D : public DECommon {
}

class E : public DECommon {
}

因此,D和E仍将保留 is-a 与A的关系,而新常用方法的逻辑仅在DECommon中间类中实现一次。