什么是单例
一个类只有一个对象实例
为什么要用到单例
单例怎么实现
1,不让其他程序new该类对象,将类中的构造函数私有化。
2,在本类中创建一个对象。
3,定义一个方法返回该对象
代码实现:
public class Singleton {//创建一个本类对象private static final Singleton singleton = new Singleton();//构造函数私有化private Singleton(){}//定义一个静态方法返回该对象,让程序可以获取。public static Singleton getInstance(){return singleton;}
懒汉式与饿汉式的区别
懒汉式:类一加载对象就已经存在
饿汉式:类加载进来没有对象,只有调用了getInstance方法时,才会建立对象
延迟加载模式
在多线程访问时会出现线程安全问题。
加了同步可以解决问题,但是降低效率。
代码体现:
饿汉式
public class Singleton {private static final Singleton singleton = new Singleton();private Singleton(){}public static Singleton getInstance(){return singleton;}
懒汉式
public class Singleton {private static Singleton singleton ;private Singleton(){}public static Singleton getInstance(){if(singleton == null){synchronized (Singleton.class){if(singleton == null){singleton = new Singleton();}}}return singleton;}