设计许多单例的代码结构的更好方法

时间:2018-06-05 13:30:21

标签: c++ singleton structure

我有许多类设计,如 ,并且它们必须随时可以访问(也可以作为单个实例)。目前我已经使用存储指向所有类的指针的命名空间。有没有更好的方法来解决/设计这样的问题/结构?

// AbcManager.h
class AbcManager
{
public:
    void printTest();

private:
    char text[] = "Hello world";
}

// ManagerNamespace.h
namespace Manager
{
    AbcManager* abc;
}

// somewhere.h
{
    Manager::abc->printTest();
}

2 个答案:

答案 0 :(得分:0)

要求两个必要条件:

  • SRP
  • 可读性

在仔细考虑后,很明显SRP不是问题,因为正如OP所说:

  

他们必须随时随地都可以访问

这意味着绝对不需要单独的对象。如果命名空间存储了所有指针,但是不同对象的初始化是以堆栈方式完成的吗?在任何时候,有些可能会丢失,指向null。这只留下了以下微不足道的可能性:

  • 没有信息隐藏:嵌套命名空间包装静态函数和变量。
  • 信息隐藏:单个'大'单身经理类。为了提高可读性,请在变量名和成员函数中使用前缀。
  • 保留已有的内容

我建议区分单例(只能有一个实例的对象)和普通对象,它只能被你的代码实例化一次(后者不是单例)。

答案 1 :(得分:-2)

模板是否合适,考虑到你有很多类,如下所示"。只需使用您需要的类型/非类型参数实例化每个模板。不确定这是不是你要问的问题。