• java设计模式之单例设计模式


    设计模式:解决某一类问题最行之有效的方法。

    java中23种设计模式。

     

    单例设计模式:解决一类在内存中只存在一个对象。

    Runtime()方法就是单例设计模式进行设计的。

     

    解决的问题:保证一个类在内存中的对象唯一性。

    比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

    1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。

    2、还为了让其他程序可以访问该类对象,只好在本类中自定义一个对象。

    3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

     

    步骤:

    1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象;

    2,就在类中创建一个本类的对象;

    3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。(作用:可控)。

     

    对于事物该怎么描述,还怎么描述。

    当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。

    饿汉式:是Single类一进入对象,就已经创建好了对象了

    懒汉式:Single类进入内存,对象还没有存在,只有调用了getInstance方法时,才建立对象

    单例设计模式第一种写法

    这个是先初始化对象。称为:饿汉式。

    Single 类一进内存,就已经创建好了对象。

    class Single

    {

           private static Single=new Single();

           private Single(){}

           public static Single getInstance()

           {

                  return Single;

           }

    }

     

    饿汉式:

    单例设计模式第二种写法

    对象是方法被调用时,才初始化,也叫做对象的延时加载,称为:懒汉式。

    Single类进内存,对象还没有存在,只有调用了getInstance方法时,才创建对象。

    class Single

    {

           private static Single s=null;

           private Single(){}

           public static Single getInstance()

           {

                  if(s==null)

                  {

                         synchronized(Single.class)

                         {

                                if(s==null)

                                       s=new Single();

                         }

                  }

                  return s;

           }

    }

     

    懒汉式在多线程访问时就会产生安全隐患,此时可加入同步函数,解决安全问题

  • 相关阅读:
    MySQL数据库备份
    执行SDK的aapt报错./aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./aapt)
    ftp删除目录和文件,目录下有文件删除提示【550 Remove directory operation failed.】
    Spring mvc接收中文参数值乱码(tomcat配置问题)
    python3获得命令行输入的参数
    Java反射、动态加载(将java类名、方法、方法参数当做参数传递,执行方法)
    java定义object数组(可以存储String或int等多种类型)
    java方法中增加不固定参数
    ibatis和myBatis打印sql语句的log4j配置文件
    spring依赖注入之手工装配
  • 原文地址:https://www.cnblogs.com/muli/p/5143748.html
Copyright © 2020-2023  润新知