Yeah.. I know.. I'm a simpleton.. So what's a Singleton?
我试过几次去理解单身汉是什么。也许我太直观了……所以,任何人都能用一个简单的类比来分解它吗?
类似职位:
- 初始化单例的不同方法
- 单人间:怎么用
- 这是一个很好的使用单件模式吗?
- 单身汉有什么不好?
- 单人间:怎么用
- 单身汉:好的设计还是拐杖?
- .NET中的全局与单例
- 关于设计模式:何时使用单例?
- Java中带参数的SuntLon
- 在Java中实现单模式的有效方法是什么?
- 单件的替代品是什么
- 使用单例类的最常见示例班
- https://stackoverflow.com/questions/1395766/asp-net-objectDatasource-singleton
- 在.NET远程处理中使用singleton还是single call?
- 什么是单人课?它能帮助我为两个相关服务运行一个类的单个实例吗?
型
根据要求,以下是一些类比:
- 百万千克1地球百万千克1百万千克1宇宙百万千克1百万千克1元素氧(有其他元素,但只有一个氧)。有很多氧分子,但只有一种典型的氧元素。)百万千克1百万千克1真的概念百万千克1百万千克1虚假的概念百万千克1
型
您可以实例化许多真实的对象,但它们都引用相同的实际项目(即,真实的普遍概念)。根据应用程序的域,可能会有更具体的示例:
- 百万千克1数据库连接百万千克1百万千克1应用程序的主线程百万千克1百万千克1表示硬件设备的任何对象(即,您只想实例化一个表示CPU0的对象)。百万千克1
型
型
singleton是一个类,应用程序中只能有一个实例。然后在整个应用程序中共享该实例。
下面是一个可能有帮助的链接(包括如何使C中的singleton线程安全):
在C语言中实现单例模式#
型
单胎是绵羊服装的一个全局变量:)
http://googletesting.blogspot.com/2008/08/root-cause-of-singletons.html
型
当必须确保一个类只有一个实例,并且必须从代码中的多个位置访问该对象时,singleton非常有用。
如果一次可以使用类的多个实例是有意义的,那么就不需要单一实例。
以下是关于在何处使用singletons的一些信息:http://www.ibm.com/developerworks/webservices/library/co-single.html
根据前面提到的文章:
To decide whether a class is truly a
singleton, you must ask yourself some
questions.
- Will every application use this class exactly the same way?
(exactly is the key word)- Will every application ever need only one instance of this class?
(ever and one are the key words)Should the clients of this class be unaware of the application they are
part of?If you answer yes to all three questions, then you've found a
singleton. The key points here are
that a class is only a singleton if
all applications treat it exactly the
same and if its clients can use the
class without an application context.
号
型
singleton是一个类,它只能创建一个实例。
这通常是通过有一个私有的构造函数来实现的,它被分配给一个静态变量,然后通过一个公共方法来访问。
使用单件有一些问题,包括:
- 百万千克1它们使测试变得困难百万千克1百万千克1他们不能分等级百万千克1百万千克1一旦实例化,实例将永远存在百万千克1
型
有关singleton的进一步描述,以及另一个可能有用的模式"monostate":http://www.objectmentor.com/resources/articles/singleton和monostate.pdf
型
有一个很好的谷歌技术演讲,演讲者在演讲中谈到了全球状况(包括单子),以及为什么测试几乎不可能:
清洁代码谈判——"全球国家和单身汉"
演讲者区分了他所称的单例(大写"s"),即采取措施防止类被多次实例化(即,通常使用静态
型
单身有时不可能这么单身。请看这里:当单身不是单身时?,Sun提供的文章。
一个建议:不要使用它。它只是不好,可能会在应用程序中造成严重的性能瓶颈,而测试单例类的工作是不值得的。
从上面提到的维基百科文章:
It should be noted that this pattern makes unit testing far more difficult, as it introduces Global state into an application.
号
另一个值得一看的资源是谷歌测试博客上的这篇文章。
型
除了它作为一个特殊的设计模式的位置,单例也可以被认为是简单的一件事。它在编程中的应用无疑源于它在数学中的应用,在数学中,单例数只是一个数的集合。