• Java笔记(十一)……单例设计模式


    设计模式

    解决某一类问题最行之有效的方法

    Java中有23中设计模式

    单例设计模式

    解决一个类在内存中只存在一个对象

    思路

      1. 将构造函数私有化
      2. 在类中创建一个本类对象
      3. 提供一个方法可以获取到对象

    两种方法

    饿汉式:类建立时分配对象

       1: class Single
       2: {
       3:     private Single(){}
       4:     //类建立时即初始化了对象
       5:     private static Single s = new Single();
       6:     public static Single getInstance()
       7:     {
       8:         return s;
       9:     }
      10: }

    懒汉式:调用时才分配对象,也叫做对象的延时加载

       1: class Single
       2: {
       3:     private Single(){}
       4:     private static Single s;
       5:     public static Single getInstance()
       6:     {
       7:         //调用时再分配对象
       8:         if(s == null)
       9:             s = new Single();
      10:         return s;
      11:     }
      12: }

    但是此懒汉式如果是多线程调用,容易出现new多个对象的问题,解决方法如下:

       1: class Single
       2: {
       3:     private Single(){}
       4:     private static Single s;
       5:     public static Single getInstance()
       6:     {
       7:         //调用时再分配对象
       8:         //为了避免每次都访问锁而设置的判断
       9:         if(s == null)
      10:         {
      11:             //加锁防止多线程调用时问题
      12:             synchronized(Single.class)
      13:             {
      14:                 if(s == null)
      15:                 {
      16:                     s = new Single();
      17:                 }
      18:             }
      19:         }
      20:         return s;
      21:     }
      22: }

    对比之下发现:

    懒汉式代码较多,而且不安全,所以建议使用饿汉式。

  • 相关阅读:
    设计模式六大原则【转】
    2进制中1的个数
    最大子数组和
    八皇后问题
    读取tomcat下的文件夹路径
    <![CDATA[ ]]>
    数据库(第一范式,第二范式,第三范式)
    input设置disabled,经过strus2提交到后台,后台取不到值
    下载项目乱码
    jsp与Action值得对应
  • 原文地址:https://www.cnblogs.com/ShawnWithSmallEyes/p/3373914.html
Copyright © 2020-2023  润新知