设计模式--单例模式Singleton

来源:互联网 发布:geekbench4 mac下载 编辑:程序博客网 时间:2024/06/14 00:48

定义:

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

经典实现:

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

处理多线程:

<pre name="code" class="java">public class Singleton{    private static Singleton INSTANCE ;    private Singleton() {}    public static synchronized Singleton getInstance(){        if(INSTANCE == null)              INSTANCE = new Singleton();        return INSTANCE;    }}

上面采用同步方法会降低性能。

直接创建单例:

public class Singleton{    private static Singleton INSTANCE =  new Singleton();    private Singleton() {}    public static Singleton getInstance(){         return INSTANCE;    }}
这样在创建和运行时方面的负担不会太重,

双重检查加锁,在getInstance()中减少使用同步:

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

此模式确保程序中一个类最多只有一个实例,并提供访问这个实例的访问点。

私有构造器,一个静态方法,一个静态变量

如果你使用多个类加载器,可能会产生多个实例。

ps 

  OO原则

  封装变化

  多用组合,少用继承

  针对接口编程,不针对实现编程 

  为交互对象之间的松耦合设计而努力

  类应该对扩展开放,对修改关闭

  **依赖抽象,不依赖具体类


0 0
原创粉丝点击