(一)如果不考虑多线程,那么可以有如下两种写法
①(饿汉式:也就是我一上来就去new一个对象)
public class SignleTest {
/**
* @param args
*/
public static void main(String[] args) {
Signleton signleton1 = Signleton.getInstance();
Signleton signleton2 = Signleton.getInstance();
System.out.println(signleton1 == signleton2);
}
}
class Signleton {
private static Signleton signleton = new Signleton();
private Signleton() {
}
public static Signleton getInstance() {
return signleton;
②(懒汉式:也就是我需要getInstace的时候才去new出一个对象)
public static void main(String[] args) {
Signleton signleton=Signleton.getInstance();
Signleton signleton2=Signleton.getInstance();
System.out.println(signleton==signleton2);
}
}
class Signleton{
private static Signleton signleton=null;
private Signleton (){};
public static synchronized Signleton getInstance(){
if(signleton==null)
{
synchronized (Signleton.class) {
//延迟加载
System.out.println("new 方法调用");
signleton=new Signleton();
}
}
return signleton;
}
}