单例模式(饿汉式和懒汉式两种实现方式)

单例模式就是通过应用此模式,保证应用该模式的类只有一个实例,即一个类只有一个对象实例

二者最主要的区别在于创建对象的时机不同:

饿汉模式是在类加载时就创建了对象实例

懒汉模式是在使用时才会创建(调用获取对象实例的时候才创建)

饿汉模式存在资源浪费的可能

饿汉模式不存在线程安全问题,懒汉模式存在线程安全问题

两种实现方式如下:

package test;
public class patterntest {
    public static void main(String[] args) {
        patterndemo p1=patterndemo.get();
        patterndemo p2=patterndemo.get();
        System.out.println(p1);
        System.out.println(p2);
        patterndemo2 p3=patterndemo2.get();
        patterndemo2 p4=patterndemo2.get();
        System.out.println(p3);
        System.out.println(p4);
    }
}
class patterndemo{//单例模式的饿汉式实现,直接创建出类的实例化
    private patterndemo(){//私有化构造器
    }
    private static patterndemo demo=new patterndemo();//自己创建一个类的实例化
    public static patterndemo get(){//创建一个get方法,返回一个实例
        return demo;
    }
}
class patterndemo2 {//单例模式的懒汉式实现,在需要的时候再创建类的实例化
    private patterndemo2(){//私有化构造器
    }
    private static patterndemo2 demo=null;//声明当前类对象,未初始化
    public static patterndemo2 get()//声明public,static的返回当前类对象的方法
    {
        if (demo==null)
        {
            demo=new patterndemo2();
        }
        return demo;
    }
}

前两个应用饿汉式实现的单例模式,对象地址相同,对象实例是同一个.后两个相同

经验分享 程序员 微信小程序 职场和发展