• 单例模式


    一些人总结出来的用于解决特定问题的固定的解决方案。

    解决一个类在内存中只存在一个对象的目的,保证对象的唯一性

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

    2.为了其他方便其他程序的访问,在本类中自定义一个对象

    3.为方便其他程序对自定义类对象的访问,对外提供一些访问方式.

    创建方法:

    1.将构造函数私有化。这样别人就不能创建该类的对象。

    2.在类中创建一个私有的本类对象。

    3、提供一个用类名调用的共有的方法来获取唯一的私有对象。

     1 class Single
     2     {
     3         private static Single s = new Single();//恶汉式
     4         private Single()
     5         {
     6         }
     7         public static Single getSingle()
     8         {
     9             return s;
    10         }
    11 
    12     }    
    13     class Single
    14     {
    15         private static Single s = null;//懒汉式
    16         private Single()
    17         {
    18         }
    19         public static Single getSingle()
    20         {
    21             if(s == null)
    22                 s = new SIngle();
    23             return s
    24         }
    25 
    26     }

    懒汉模式public static Single s; 这样做的意思是,你的这个单例类别人不一定使用,所以没必要提前定义,可能你定义了别人用不到,懒汉之处,在于什么时候使用,是么时候在创建这个对象。

    推荐使用恶汉单例模式。懒汉单例模式,可能会出现线程方面的问题。

    懒汉模式的单例模式的线程安全问题,之前介绍过单例模式的两种类型,恶汉模式和懒汉模式,当时就有提到懒汉模式的单例模式存在线程安全问题。下面是一种,既考虑线程安全问题又考虑效率问题的解决方案.

     1 Class Single
     2 {
     3 Private Single s;
     4 Private Single(){}
     5 Public Single getSingle()
     6 {
     7 If(s == null)
     8 {
     9 Synchronized(“锁”)
    10 {
    11 If(s == null)
    12 {
    13 S = new Single();
    14 }
    15 }
    16 }
    17 Return s;
    18 }
    19 }

    其实,上面加完锁之后就可以保证线程安全了,但是为了提高效率,在外面又加了一层判断,这个可以分析一下,第一次的效率慢一点,以后的效率还是很快的。

  • 相关阅读:
    Java 核心编程——文件随机读写类(RandomAccessFile)
    java 核心编程——文件过滤类(FileFilter和FilenameFilter)
    java 核心编程 ——文件操作类File
    java 编程思想笔记(七)——异常
    java 编程思想笔记(六)——内部类
    enote笔记法使用范例(2)——指针(1)智能指针
    enote笔记法使用范例(1)——自己总结的一些编写代码的常识 (a)
    enote笔记语言(2)
    enote笔记语言(1)
    monkey命令——压力测试——转载参考07
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/6027198.html
Copyright © 2020-2023  润新知