传输对象以集中实例
Transit Objects to centralize instances
你怎么看这个概念:
项目中存在许多类,其中一些是单例的,希望在整个代码库中共享。包括每个必需的头文件并在子类中创建一个专用的指针调用可能会很麻烦。思路:有一个所谓的"传输对象",它携带指向实际实例的指针/引用,并提供getter。
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,析构函数等…)
看起来你是在重新发明轮子。您所展示的看起来非常像构建器设计模式,您甚至可以在网上找到c++示例(这里和这里)。
相关文章:
- 从C++实例化QML
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 如何从存储在std::映射中的std::集中删除元素
- 建议在运行时将带有类实例的列表从c++导入qml
- 约束和显式模板实例化
- 通过实例理解std::move及其目的
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 正在生成未知类实例
- 在 c++ 集中查找相等的实例
- 传输对象以集中实例