Monday, September 3, 2012

Singleton Design Pattern


Approach 1: Regular singleton

package

patterns;
public
class Singleton {
private static Singleton myObject = null;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (myObject== null) {
myObject = new Singleton();
}
return myObject;
}
}


Approach 2: Double Lock check

package
patterns;
public
class SingletonDoubleLock {
private static SingletonDoubleLock myObject = null;
private SingletonDoubleLock() {
}
public static SingletonDoubleLock getInstance() {
if (myObject == null) {
synchronized (SingletonDoubleLock.class) {
if (myObject == null) {
myObject = new SingletonDoubleLock();
}
}
}
return myObject;
}
}


Aproach 3: Early Initilization

package
patterns;
public
class SingletonEarly {
private static SingletonEarly myObject = new SingletonEarly();
private SingletonEarly() {
}
public static SingletonEarly getInstance() {
return myObject;
}
}

No comments:

Post a Comment