单件模式

来源:互联网 发布:网络手机电视直播 编辑:程序博客网 时间:2024/06/01 09:38

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

实现方式大致是让构造函数为private,添加一个static类型的全局变量作为唯一实例,用一个getInstance()函数获取这个唯一变量。

public class SingleComponentImmediate {    public static SingleComponentImmediate uniqueInstance = new SingleComponentImmediate();//直接声明,但会占用空间    private SingleComponentImmediate(){};    private SingleComponentImmediate getInstance(){        return uniqueInstance;    }}public class SingleComponentSynchronize {    public static SingleComponentSynchronize uniqueInstance;    private SingleComponentSynchronize(){};    public static synchronized SingleComponentSynchronize getInstance(){//synchronized使线程进入此方法前要等其它线程离开此方法,但会影响程序效率        if (uniqueInstance == null)            uniqueInstance = new SingleComponentSynchronize();        return uniqueInstance;    }}public class SingleComponentDoubleClock {    public volatile static SingleComponentDoubleClock uniqueInstanse;//volatile关键词确保:当uniqueInstance被初始化为SingleComponentDoubleClock时,多个线程正确处理它。    private SingleComponentDoubleClock(){};    public static SingleComponentDoubleClock getUniqueInstanse() {        if (uniqueInstanse == null){            synchronized (SingleComponentDoubleClock.class){//第二重锁                if (uniqueInstanse == null)                    uniqueInstanse = new SingleComponentDoubleClock();            }        }        return uniqueInstanse;    }}

原创粉丝点击