单件模式(Singleton Pattern)

单件模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点.

:某些类拥有多个实例是不必要,不安全的,比如注册表管理理,线程池,连接池等等

 

  1. class Singleton
  2. {
  3.     private static Singleton uniqueInstance;
  4.     private Singleton()
  5.     {
  6.     }
  7.     public static Singleton getInstance()
  8.     {
  9.         if (uniqueInstance == NULL)
  10.             uniqueInstance = new Singleton();
  11.             return uniqueInstance;
  12.     }
  13. }
  14. //这个可能会在多线程中创建多个实例
  15. class Singleton1
  16. {
  17.     private static Singleton uniqueInstance=new Singleton();
  18.     private Singleton1()
  19.     {
  20.     }
  21.     public static Singleton getInstance()
  22.     {
  23.             return uniqueInstance;
  24.     }
  25. }
  26. //这个不能达到延迟实例化的效果
  27. class Singleton2
  28. {
  29.     private static Singleton uniqueInstance;
  30.     private Singleton2()
  31.     {
  32.     }
  33.     public static synchronized Singleton getInstance()
  34.     {
  35.         if (uniqueInstance == NULL)
  36.             uniqueInstance = new Singleton();
  37.         return uniqueInstance;
  38.     }
  39. }
  40. //这个影响getInstance()的性能
  41. class Singleton3
  42. {
  43.     private volatile static Singleton uniqueInstance;
  44.     private Singleton3()
  45.     {
  46.     }
  47.     public static Singleton getInstance()
  48.     {
  49.         if(uniqueInstance==null)
  50.         {
  51.             synchronized(Singleton.class)
  52.             {
  53.                 if(uniqueInstance==null)
  54.                     uniqueInstance=new Singleton();
  55.             }
  56.         }
  57.         return uniqueInstance;
  58.     }
  59. }
  60. //这个相对最为合理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值