- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我经常使用单例,因为我讨厌将主类的对象传递给成员类以允许它们访问主类。
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/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!