单例模式

来源:互联网 发布:胖子丁丁小吗 知乎 编辑:程序博客网 时间:2024/06/06 14:27
有些对象我们只需要一个,比如:配置文件,工具类,线程池,缓存,日志对象等。如果创造出多个实例,就会导致出现结果不一致等问题。

我们可以通过单例模式来保证只有一个对象:
(一)饿汉模式

/** * 饿汉模式,类加载的时候已经创建了实例。 * 即使用户没有调用getInstance() * @author admin * */public class Singleton {    //1.将构造方法私有化,不允许外部直接创建对象。   private Singleton(){      }   //2.在类的内部创建唯一实例,使用private static修饰   private static Singleton instance=new Singleton();   //3.提供一个获取实例的方法,使用public static修饰   public static Singleton getInstance(){       return instance;   }}

(二)懒汉模式

/** * 懒汉模式:类加载的时候没有创建唯一的实例。 * 当第一个用户获取实例的时候创建实例 * 后面的用户不用创建实例 */public class Singleton2 {    //1.构造方法私有化,外部不能直接创建对象    private Singleton2(){}    //2.创建类的唯一实例    private static Singleton2 instance;    //3.提供一个获取实例的方法,使用public static修饰    public static Singleton2 getInstance(){        if(instance==null)            instance=new Singleton2();        return instance;    }}

(三)饿汉模式和懒汉模式的区别
饿汉模式的特点是加载类的时候比较慢,但是运行的时候获取对象的速度比较快。懒汉模式,加载类的时候比较快,但是运行的时候获取对象的速度比较慢。饿汉模式是线程安全的,而懒汉模式不安全。

0 0
原创粉丝点击