|
|
1
4
这不是一个疯狂的代码,但它还是一个单身汉。如果删除
全球可及性并不是让单身汉讨厌的全部。让它们讨厌的是它们直接在整个系统中使用,而您无法跟踪所有这些用法。这就是为什么在多线程代码中这是一个噩梦,这也是为什么在单线程代码中进行单元测试是如此困难的原因。
因此,如果这是您的代码,我建议您在应用程序初始化期间只创建一个对象,并使用依赖项注入或作为简单的构造函数参数传递它。如果它是一个库,那么您可以签入构造函数(如果它是第一个正在创建的对象)或不签入构造函数并引发异常,也可以像处理静态构造函数一样使用静态构造函数,但不使用
像往常一样,你可以创建一个单例,毕竟它的所有重要的是,产品的工作和客户喜欢使用它,单例或没有单例并不真正重要。 |
|
|
2
1
你不会疯的。单例通过命名来避免全局变量的缺点。尽管它可以通过静态函数调用进行全局访问,但它不是全局变量。而且,它是通过一个名称空间访问的,所以没有人可能将它放在一个名为temp的全局变量中,然后将其他东西分配给temp。他们应该总是通过这样做得到当地的参考 mysingleton singletoref=mysingleton.instance(); 当它们的作用域关闭时,引用将消失,因此它不是全局变量。 |
|
|
3
0
所以,如果我只是需要夸耀你只能创建我的对象的一个版本,那么这样的事情就会奏效:
显然不再是真正的单身汉了。 |
|
|
simply lemon · python上链表的添加方法 2 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 2 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 2 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |