zoukankan      html  css  js  c++  java
  • 设计模式之单例模式及其饿汉式与懒汉式

    设计模型: 解决某一类问题行之有效的解决办法(思想); 共有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; 
      } 
    }
  • 相关阅读:
    FatMouse's Speed --hdu
    poj 1182--食物链 (并查集)
    HDU
    CodeForces
    LightOJ
    HDU2717:Catch That Cow(BFS 队列)
    HDU
    51Nod
    bash: ifconfig: command not found 解决办法--------仅供参考
    关于“ORA-01653: 表 SYS.AUD$ 无法通过 128 (在表空间 SYSTEM 中)
  • 原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399597.html
Copyright © 2011-2022 走看看