c++ - 设计替代?组成和结构

标签 c++ design-patterns

因此,我正在使用组合将一组对象组合在一起,所有这些对象都派生自一个基类,比方说 Component。例如:

class Component {
public:
  Component();
  ...
private:
  int m_address;
  ...
};

class SpecializedComponent: public Component {
public:
  SpecializedComponent()
  ... //and so on
};

class SpecializedComponent2: public Component {
public:
  SpecialIzedComponent2()
  ... //and so on
};

class ComponentHolder{
  SpecializedComponent* m_descriptiveName;
  SpecializedComponent2* m_descriptiveName2;
  // and so on... many different types of components
}

因此,每个 SpecializedComponentX 将通过网络与单独的数据源进行通信,每个数据源都有自己唯一的地址。这些地址在参数文件中指定。目前,我正在解析参数文件,并且 m_address 在派生类构造函数中被初始化 - 这是因为每个 m_address 都是由我们正在初始化的对象类型指定的。

每个 SpecializedComponentX 都有一些我想在基类 Component 中执行的通用功能。所以,我启动了一个与基类 Component 关联的线程,对吗?当然 - 有道理。直到我意识到我还没有那个组件的目标地址——因为这个对象还没有完全构建。我想在 ctor 中启动基类线程,但我还不知道 m_address

我能想到的解决这个问题的唯一方法是提供一个(简单的)虚函数,void start(),派生类可以在对象完成后调用它来启动线程建。这是一个有效适当的设计选择,还是有一个我可能会忽略的模式?谢谢。

最佳答案

组件可以有一个带有一个参数的构造函数来初始化 m_address。

关于c++ - 设计替代?组成和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2004035/

相关文章:

c++ - 变量模板特化

c++ - 如何为 a[x][y] 形式创建重载运算符?

java - 寻找合适的设计模式

java - 从 Google Datastore 加载 DDD 实体的设计模式是什么?

design-patterns - 数据映射器和关系:实现策略?

c++ - 用于查找可执行文件依赖项的命令

c++ - 不确定如何使用模板调用类函数

c++ - 使用 unique_ptr 和原始指针重载全局函数

java - 在 Java 中使用 MVC 模式

javascript - 应该查看触发事件吗?