gpt4 book ai didi

C++:单例的替代品

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:29 27 4
gpt4 key购买 nike

我经常使用单例,因为我讨厌将主类的对象传递给成员类以允许它们访问主类。

Class Foo
{
A* a;
B* b;
C* c;
};

例如,在上面的例子中,如果 A、B 和 C 想要访问 Foo——我必须将 Foo 的对象传递给它们中的每一个,并将其存储为它们的成员变量(或者在每个函数中给出对象称呼)。这行得通,但感觉不对,需要编写更多代码。

相反,我可以将 Foo 设为单例(当然前提是只有 1 个实例),然后从 A、B 和 C 调用 Foo::getInstance()->...。我没有传递任何对象。我发现这非常方便。

现在,问题是我遇到了可以有多个 Foo 实例的情况。显然我不能使用单例模式。但我不想传递变量,也不想将它们存储在成员类中。代码太多! :)

举个例子,我讨厌这个:

A::A(Foo* foo) : m_foo(foo)
{

}

还有这个:

void A::someFunc(Foo* foo, int someParam)
{

}

但是,我喜欢这个:

A::A()
{

}

void A::someFunc(int someParam)
{
Foo* foo = Foo::getInstance();
}

还有其他方法吗?类似于单例模式的东西?

最佳答案

这种模式正在创建一堆循环引用,这通常是一种代码味道。您可能需要仔细查看您的设计,因为解决此类关系问题的通常方法是创建与两个现有类交互的第三类。或者,如果您确实需要这种行为,传递对包含类的引用有什么问题?

关于C++:单例的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688415/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com