您如何看待这个概念:
项目中存在许多类,其中一些是单例,希望在整个代码库中共享。包括每个必需的头并在子类中创建专用指针调用可能是一件麻烦事。这个想法:有一个所谓的“运输对象”,它带有对真实实例的指针/引用并提供吸气剂。
class TransitObject
{
private:
MyGarden& garden;
MyApple& apple;
MyFountain& fountain;
public:
TransitObject(MyGarden& G, MyApple& A, MyFountain& F) : garden(G), apple(A), fountain(F) {}
MyApple& GetApple() { return apple; }
MyGarden& GetGarden() { return garden; }
MyFountain& GetFountain() { return fountain; }
};
class WoodShack
{
public:
WoodShack(TransitObject& t) { t.GetApple().whatever(); }
};
你认为这是一个优势吗?我喜欢它,因为它可以很容易地携带单身人士。添加新实例非常简单,不会让程序员感到困惑。请注意,代码只是一个示例,当然可以进行优化(const,析构函数等)