c++ - 改进 C++ 类体系结构,其中许多类派生自相同的两个基类

标签 c++ architecture

我有一个 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 个派生类,感觉应该有一种方法来改进这个设计,这样我就必须编写更少的代码,尤其是作为派生类他们所做的事情通常非常相似。谁能给我一些关于 future 的建议?

最佳答案

看看策略设计模式。基本上使方法 1 和方法 2 包装由类 D 的唯一指针拥有的 B1 和 B2 类。然后您可以在 D 的构造函数中传递 B1 和 B2 实例。

关于c++ - 改进 C++ 类体系结构,其中许多类派生自相同的两个基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19521000/

相关文章:

c++ - 为什么 boost::asio::read 缓冲区数据大小小于读取大小?

c++ - 为什么 braced-init-list 在函数调用和构造函数调用中的行为不同?

c++ - C中的嵌入式编程

java - 实体 : Conditionals + Component members vs. O(1) 策略的哈希查找

c++ - 关于数据包和缓冲区大小的 TCP 套接字编程

c++ - 外部 "C"错误预期 '='、 ','、 ';'、 'asm' 或 '__attribute__' 之前的 'int'

c# - 代理-服务器拓扑的服务器推送与客户端拉取

javascript - 使用 React 组件管理数据

Spring配置和运行时分离

node.js - 自主维护可用工作人员状态的最佳方法是什么