There are only two points in the definition of a singleton design pattern,
- there should be only one instance allowed for a class and
- we should allow global point of access to that single instance.
Sample code : singleton + early Initialization
public class Singleton {
private Singleton() {}
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
Sample code : singleton + lazy Initialization
public
class
Singleton {
private
static
Singleton singleInstance;
private
Singleton() {}
public
static
Singleton getSingleInstance() {
if
(singleInstance ==
null
) {
synchronized
(Singleton.
class
) {
if
(singleInstance ==
null
) {
singleInstance =
new
Singleton();
}
}
}
return
singleInstance;
}
No comments:
Post a Comment