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


    设计模型: 解决某一类问题行之有效的解决办法(思想); 共有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; 
      } 
    }
  • 相关阅读:
    008 Python、Anaconda、pip、Pycharm、Jupyter 的下载
    010 Python 重中之重的变量
    19 Transformer 解码器的两个为什么(为什么做掩码、为什么用编码器解码器注意力)
    15 Transformer 框架概述
    009 Pycharm的使用(各种骚操作和快捷键)
    17 Transformer 的解码器(Decoders)——我要生成一个又一个单词
    011 Python 的打印(花式变色打印)和注释(为什么加个#号就能注释)
    012 Python约定俗称的常量
    IfcPointOrVertexPoint
    java时间戳转为日期
  • 原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399597.html
Copyright © 2020-2023  润新知