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; 
      } 
    }
  • 相关阅读:
    SEM关键词的三种分类方式
    分分钟解决 MySQL 查询速度慢与性能差
    为什么notify(), wait()等函数定义在Object中,而不是Thread中
    wait(), notify(), notifyAll()等方法介绍
    Java中的Volatile和synchronized的区别
    史上最简单的 SpringCloud 教程
    如何用git将项目代码上传到github
    常见排序
    【CodeForces】9B-Running Student
    【CodeForces】9A-Die Roll
  • 原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399597.html
Copyright © 2011-2022 走看看