单例模式---(1)

来源:互联网 发布:现在还可以网络购彩票 编辑:程序博客网 时间:2024/06/05 00:16

     先来介绍一下设计模式:它是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。设计模式更多的是停留在思想层面,指导我们提高编码的效率和质量。

   使用设计是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。


单例模式:

     在我们的开发过程中,有些对象我们只需要一个,例如:配置文件,工具类,线程池,缓存,日志对象等。

  如果创建多个实例,就会导致很多问题,比如占用过多资源,获取内容不一致的问题,为了保证整个应用中的实例有且只有一个,便要用到单例模式。


单例模式有两种实现方式,懒汉模式和饿汉模式


饿汉模式

<span style="font-size:18px;">public class Singleton{//1.将构造器私有化,不允许外部直接创建对象private Singleton(){}//2.创建类的唯一实例,为保证类的封装特性,要将其私有化private static Singleton instance = new Singleton();//3.给外部提供一个静态方法,可以获取该唯一实例public static Singleton getInstance(){return instance;}}</span>
 

通过这种方式,可以保证外部获得的实例对象为同一个。

之所以称其为饿汉模式,是因为这个唯一的实例对象实在类加载的时候就被创建了,也就是着急吃饭,即为饿汉模式


懒汉模式

<strong><span style="font-size:18px;">public class Singleton2{//1.将构造器私有化,不允许外部直接创建对象private Singleton2(){}//2.声明类的唯一实例,为保证类的封装特性,要将其私有化,与饿汉模式不同的是,//  此处只是声明对象,并未将其实例化private static Singleton2 instance;//3.给外部提供一个静态方法,可以获取该唯一实例public static Singleton2 getInstance(){if(instance==null){instance = new Singleton2();}return instance;}}</span></strong>

  这种方式通过判断实例是否为空来决定是否需要创建实例,当第一次调用该方法时会创建实例,之后便只需直接应用第一次创建的实例即可。

 

饿汉模式和懒汉模式的区别

  饿汉模式中实在类加载时就创建实例对象,所以加载阶段比较慢,运行阶段之间使用已经创建好的实例,所以会比较快。与之相反

懒汉模式是在运行阶段才创建类的唯一实例,所以运行阶段比较慢,而类加载阶段比较快

    另一个重要的区别是,饿汉模式是线程安全的,而懒汉模式是线程不安全的。




1 0
原创粉丝点击