【问题标题】:Multiple instances of class using single instance of another class使用另一个类的单个实例的类的多个实例
【发布时间】:2014-04-06 11:39:09
【问题描述】:

我有一个在运行时存在许多实例的类(A 类)。该类使用另一个处理资源分配的类(R 类)。由于第二类(R 类)正在为 A 类的所有实例进行资源分配,因此它必须只有一个副本。

所以它看起来像这样:

Class P (Parent) 
Class A[64], which are childs of Class P 
Each of these requires access to the single instance of Class R

我想知道这个问题的最佳解决方案。

  1. 让父级(P 类)实例化 R 类并传递 每个 A 类的实例。问题:P 类不关心 R类,没有用。必须这样做似乎很愚蠢 管理它。
  2. 全局变量,可能隐藏在命名空间中问题:任何人都可以 然后使用它,它应该限制在A类。
  3. A 类内部的静态变量,因此 A 类的所有实例都有 访问 R 类的同一个实例。问题:静态类 变量是邪恶的

还是我没有想到的?

【问题讨论】:

  • 父子关系是指继承还是客户-仆人关系?
  • 在线查找单例模式
  • @Tomasz Bekas:我的意思是 P 类实例化了 A 类,例如,它将包含诸如 newChild = new ClassA(); 之类的代码

标签: c++ class static-members


【解决方案1】:

让类 R 包含一个自身的实例,即。单例模式。

那么你可以这样做:

class A
{
R *resource;
public:
A() { resource = R::getInstance(); }
}

从那时起,使用“资源”作为新的类指针,以防万一你改变主意以后事情的工作方式。

但是,由父级抓取实例可能会更好、更灵活。例如,在 P 类中:

classA = new A(R::getInstance());

这样,您可以在需要时轻松更改资源类(例如,用于单元测试),但类 P 不管理资源对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2020-04-20
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多