设计模式之单件模式-学习笔记

一、定义

确保一个类只有一个实例,并提供一个全局访问点。

要点:单件模式需要私有构造器、一个静态方法、一个静态变量

二、实现

1、同步过程

适用:应用程序可以接受getinstance造成的额外负担

优点:特容易实现

缺点:多线程下,效率下降严重

实现:

 

2、静态初始化

适用:总是创建并适用单件实例,或者在创建和运行时方面的负担不太繁重,更急切的创建此实例。

实现:

 

3、双重检查

适用:杀鸡用牛刀,最完美的方法

实现:

 

三、理解

1、为什么if(uniqueInstance==null)会出错

Java中,每个类加载器都定义了一个命名空间,如果有两个类加载器,不同的加载器可能会加载同一个类,从而一个类被加载多次,可能会产生多个单价并存的怪异现象。

2、单件类可不可以当超类,可不可以继承单件类

  • 直接继承,会导致所有派生类共享同一个实例变量。
  • 单价类构造器私有,不能用私有构造器扩展类,所以必须将单件类构造器改成公开或受保护的。

3、如果使用JVM1.2 需要建立单件注册表,被全局引用,要不然就会被GC

4、如果不是JAVA2,双重检查发就会失效

Print Friendly
赞 (0)
分享到:更多 ()

留言板 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址