设计模式——单例模式

【单例模式 Singleton】

单例模式Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

 

保证唯一性的思想及步骤

   为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化

   为了避免其他程序访问到该类对象,须在本类中创建一个该类私有对象

   为了方便其他程序访问到该类对象,可对外提供一个公共访问方式(全局访问点)

 

使用单例模式,需要注意的是,单例模式用来保证系统中一个类只有一个实例。

单例类的构造函数必须为私有,同时单例类必须提供一个全局访问点。

 

单例模式的作用是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(也可以不存在)。

单例模式确保某一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例单例模式。

单例模式只应在有真正的“单一实例”需求时才可使用。

 

 

单例设计模式的两种方式: 

A:饿汉式 当类加载的时候,就创建对象。(开发常用饿汉式,因为简单安全)

class Singleton {

  private Singleton() {} 

  private static final Singleton uniqueInstance = new Singleton();

  public static Singleton getInstance()  {

    return uniqueInstance;  

  }

}

 

B:懒汉式 当使用的时候,才去创建对象。(多线程的时候容易发生问题)

class Singleton {

  private Singleton(){}

  private static Singleton uniqueInstance = null; 

  public static Singleton getInstance() {

    if(uniqueInstance==null) {  

      uniqueInstance = new Singleton();

    }

  return uniqueInstance;

  }

}

 

 

饿汉式和懒汉式的区别

1)饿汉式是类一加载进内存就创建好了对象;

   懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,对象才开始创建。

2)懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题可以加同步 来解决。但是加了同步之后,每一次都要比较效率就变慢了,所以可以加双重判断来提高程序效率。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值