(一)如果不考虑多线程,那么可以有如下两种写法
①(饿汉式:也就是我一上来就去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;
}
}
本文介绍了单例模式的两种实现方式:饿汉式和懒汉式。饿汉式是在类加载时就创建实例,而懒汉式则是在第一次调用getInstance方法时才创建实例。文章通过代码示例详细解释了这两种方式的区别。
225

被折叠的 条评论
为什么被折叠?



