单例模式
饿汉
package DesignPatterns.Singleton;
public class Singleton1 {
private byte[] data = new byte[1024];
private static Singleton1 instance = new Singleton1();
private Singleton1() {
}
public static Singleton1 getInstance() {
return instance;
}
}
懒汉
package DesignPatterns.Singleton;
public class Singleton2 {
private byte[] data = new byte[1024];
private static Singleton2 instance = null;
private Singleton2() {
}
public static Singleton2 getInstance() {
if (instance == null)
instance = new Singleton2();
return instance;
}
}
懒汉 + 同步
package DesignPatterns.Singleton;
public class Singleton3 {
private byte[] data = new byte[1024];
private static Singleton3 instance = null;
private Singleton3() {
}
private static synchronized Singleton3 getInstance() {
if (null == instance)
instance = new Singleton3();
return instance;
}
}
Double Check
package DesignPatterns.Singleton;
import java.net.Socket;
import java.sql.Connection;
public class Singleton4 {
private byte[] data = new byte[1024];
private volatile static Singleton4 instance = null;
Connection conn;
Socket socket;
private Singleton4() {
this.conn = null;
this.socket = null;
}
public static Singleton4 getInstance() {
if (null == instance) {
synchronized (Singleton4.class) {
if (null == instance) {
instance = new Singleton4();
}
}
}
return instance;
}
}
Holder
package DesignPatterns.Singleton;
public class SingletonHolder {
private byte[] data = new byte[1024];
private SingletonHolder() {
}
public static class Holder {
private static SingletonHolder instance = new SingletonHolder();
}
public static SingletonHolder getInstance() {
return Holder.instance;
}
}