【发布时间】:2013-10-22 14:41:06
【问题描述】:
我有一个 C++ 架构,其中有许多类都派生自两个不同的基类。所有派生类都以略有不同的方式覆盖/实现基类中的相同方法。举例说明:
class B1 {
public:
// method_1 is pure virtual.
virtual void method_1() = 0;
};
class B2 {
public:
// method_2 is not pure virtual.
virtual void method_2();
};
class D1 : public B1, public B2 {
public:
virtual void method_1() { // Does something... }
virtual void method_2() { // Does something... }
};
class D2 : public B1, public B2 {
public:
virtual void method_1() { // Does something slightly different... }
virtual void method_2() { // Does something slightly different... }
};
一切正常,但是由于有大约 20 个派生类,感觉应该是一种改进这种设计的方法,这样我就必须编写更少的代码,尤其是作为派生类他们所做的事情通常非常相似。谁能给我一些关于未来的建议?
【问题讨论】:
-
它们都继承自
B1和B2吗?然后,您可以先将B1和B2替换/合并为单个类B。 -
method1一般可以用method2来实现吗?
-
@Axel 它们都继承自
B1和B2,所以我可以这样做。但我的直觉说这很糟糕,因为这两个基地是不同的——我会在@Alexander L. Belikoff 的回答中添加更多内容。 @Matteo,我不这么认为。 -
为什么有这么多相似的类?
-
我认为第一个问题是
D1和D2之间的区别是否可以通过某种方式进行参数化。
标签: c++ architecture