星期一, 四月 09, 2007

Design Patterns - Singleton Pattern

The Singleton Pattern : ensures a class has only one instance , and provides a global point of access it.

sample code :

public class Singleton {

private static Singleton uniqueInstance;

private Singleton() {
}

public Singleton getInstance() {
if(uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}

Deal with multi thread :

public class Singleton {

private static Singleton uniqueInstance;

private Singleton() {
}

public synchronized Singleton getInstance() {
if(uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}

Double checked Singlton method :

package com.oreilly.designpattern.singleton;

public class DoubleCheckSingleton {

private volatile static DoubleCheckSingleton uniqueInstance;

private DoubleCheckSingleton() {

}

public DoubleCheckSingleton getInstance() {
if (uniqueInstance == null) {
synchronized (DoubleCheckSingleton.class) {
if (uniqueInstance == null) {
uniqueInstance = new DoubleCheckSingleton();
}
}
}
return uniqueInstance;
}

}

没有评论: