答案 0 :(得分:22)
答案 1 :(得分:5)
答案 2 :(得分:5)
Java Runnable 是 Singleton Pattern 的最佳示例。如果您想添加一个不允许创建特定类的单个实例的限制,那么最好实现 Singleton Pattern 。 实施单身人士的关键点:
公共getter方法仅在第一次初始化上面的变量时,始终返回Singleton类的相同实例。
class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance=null){
instance=new Singleton();
}
return instance;
}
........
}
对于线程安全: 需要同步getInstance()。
答案 3 :(得分:2)
答案 4 :(得分:1)
如上所述,单例模式的目的是确保实例化一个类的单个实例。
单例模式被认为是GOF pattern catalog中的“坏”模式之一,因为单例导致代码中的耦合并且难以对代码进行(单元)测试。后一点在(大多数)动态/松散类型语言中并非100%正确,因为您可以编写补丁代码。
让我们来看看耦合:使用Singleton的每个代码段都直接耦合到Singleton的实现。这很难/不可能模拟,因为Singletons经常用于基础设施服务,如数据库访问层,您要测试的单元与数据库访问层的具体实现相耦合。但是对于单元测试,您不想访问数据库,您希望拥有一些模拟数据访问层。你最终会问自己为什么使用单身模式。
我建议仅用于“简单”软件的单例模式,但我们都知道软件有增长的趋势。在几年后开始简单和结束复杂。
答案 5 :(得分:1)
如果您不想创建同一类型的多个实例,则需要使用单例。但是,如果使用静态类,则可以实现相同的目的。所以这里的重点是它不是唯一的一个实例,而是对实例创建的控制,从而避免了不必要的宝贵资源消耗。
答案 6 :(得分:1)
想想多个实例会出错的所有内容(不一致)。它可以是一个Application对象(应用程序的根对象)或应用程序范围的securityManager等。单例只是一种强制执行的方法,在类中只能有一个实例。
答案 7 :(得分:1)
The Singleton pattern is about to ensure a class has only one instance, and provide a global point of access to it.
答案 8 :(得分:0)
答案 9 :(得分:0)
当你只需要一个类中的一个实例时。最好的例子之一是记录器。你只需要一个实例。
答案 10 :(得分:0)
当系统中只需要一个类中的一个实例时,因为它只有一个实例,所以你可以严格决定用户如何访问它。
答案 11 :(得分:0)
在软件工程中,单例模式是一种设计
将类的实例化限制为一个对象的模式
当只需要一个对象来协调
时,这很有用
整个系统的行动。
应用程序需要一个且只有一个对象的实例 此外,还需要延迟初始化和全局访问。
更多信息......
http://www.dzone.com/links/r/java_ee_singleton_design_pattern_introduction.html
答案 12 :(得分:0)
如果您只想强制在应用中创建的类的一个实例,则应使用单例模式。这可能是因为:
创建此类对象是资源密集型的
该对象是一个应用程序级对象;因此,拥有它们的多个实例是没有意义的。
因此,设计像单身人士这样的课是有道理的。有关更多信息,请参阅singleton design pattern explained with c# .net example