23中设计模式之单例(Singleton)模式

来源:互联网 发布:淘宝拓拨斯科技怎么样 编辑:程序博客网 时间:2024/04/30 09:03

单例模式:确保一个类只有一个实例,并提供一个全局访问点

有一些对象有时候只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。

处理多线程的三种单例方法:

1.同步(synchronized)方法

这个方法性能大大降低

2.使用急切创建实例

这个方法只是稍微陌生了

3.双重检查加锁

这个方法还得确定使用的是Java5以上的版本。

问:如果有多个加载器呢。

每个类加载器都定义了一个命名空间,如果有两个以上的类加载器,不同的类加载器可能会加载同一个类。

如果你的程序有多个类加载器又同时使用了单件模式,请小心。有一个解决办法:自行制定类加载器,并指定同一个类加载器。

问:可以继承单件类嘛?

因为构造器是私有的,不能被继承,final也一样。

====================================================================

懒汉式 与 饿汉式的区别就是:创建对象的时间不同

懒汉式

public class Singleton{     private Singleton(){}    private static Singleton singleton = null;    public static synchronized Singleton getInstance(){             if(singleton == null) {                                  singleton = new Singleton ();               }             return singleton ;     }}


饿汉式

public class Singleton{     public Singleton(){}    private static Singleton singleton = new Singleton();    public static Singleton getInstance(){        return singleton;   }}







0 0
原创粉丝点击