单例模式(饿汉式和懒汉式两种实现方式)
单例模式就是通过应用此模式,保证应用该模式的类只有一个实例,即一个类只有一个对象实例
二者最主要的区别在于创建对象的时机不同:
饿汉模式是在类加载时就创建了对象实例
懒汉模式是在使用时才会创建(调用获取对象实例的时候才创建)
饿汉模式存在资源浪费的可能
饿汉模式不存在线程安全问题,懒汉模式存在线程安全问题
两种实现方式如下:
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; } }
前两个应用饿汉式实现的单例模式,对象地址相同,对象实例是同一个.后两个相同