传输对象以集中实例

时间:2014-06-12 12:33:25

标签: c++

您如何看待这个概念:
项目中存在许多类,其中一些是单例,希望在整个代码库中共享。包括每个必需的头并在子类中创建专用指针调用可能是一件麻烦事。这个想法:有一个所谓的“运输对象”,它带有对真实实例的指针/引用并提供吸气剂。

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,析构函数等)

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试重新发明轮子。您提供的内容与builder design pattern非常相似,您甚至可以在网上找到c ++示例(herehere)。