设计模式之单例模式及其饿汉式与懒汉式

设计模型: 解决某一类问题行之有效的解决办法(思想); 共有23种,下面看一种: 

单例(Singleton)设计模型: 
可以保证一个类的对象唯一性。

场景:比如多个程序都要使用一个配置文件中的数据,而且要实现数据共享和交换。必须要将多个数据封装到一个对象中。而且多个程序操作的是同一个对象。也就是说必须保证这个配置文件对象的唯一性。

怎么保证对象的唯一性: 
1. 一个类只要提供了构造函数,就可以产生多个对象,无法保证唯一。既然数量不可控,所以干脆不让其他程序建立对象,也就是把构造方法私有化。 
2. 不让其他程序创建,对象何在?所以干脆自己在本类中创建一个对象,这样的好处是什么,可控。 
3. 创建完成后,是不是要给其他程序提供访问方式。

怎么实现这个步骤: 
1. 怎么不让其他程序创建对象:直接私有化构造函数,不让其他程序创建的对象初始化。 
2. 直接在本类中new一个本类对象。 
3. 定义一个功能,其他程序可以通过这个功能获取到本类的对象。

构造方法被私有化,就不能在其他类中new这个类的对象了,不能实例化这个类了。

单例模式分为两种,懒汉式和饿汉式。面试中用的最多的是懒汉式。开发中用的最多的是饿汉式(不浪费内存吗?不。因为不需要对象就不用加载类,加载类一定是要用对象。不管先加载还是后加载都需要这个对象)。

饿汉式: 

class Single{ 
  private static Single s = new Single(); 
  private Single(); 
  public static Single getInstance(){ 
    return s; 
  } 
}

懒汉式: 
单例的延迟加载方式。 

class Single{ 
  private static Single s = null; 
  private Single(); 
  public static Single getInstance(){ 
    if(s = null) 
      s = new Single(); 
    return s; 
  } 
}
原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399597.html