俊介三

一天更新一点,一天积累一点

导航

Singleton Pattern

Posted on 2013-03-23 14:45  俊介三在前进  阅读(102)  评论(0)    收藏  举报

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

这算是设计模式中最最最简单的一个。就是说,我想创建一个类,这个类只允许一个实例,就能用这个模式。
什么场景下我只要并且只能有一个实例呢?如数据库连接、如打印机连接等。。

class Singleton{
        //volatile强制每次都跟原来的成员变量进行比较,防止在线程中出错。
    private volatile static Singleton uniqueInstance;

        //私有构造方法
    private Singleton(){}

        //公共静态方法,使得通过类名就能调用它
    public static Singleton getUniqueInstance(){
                //双重锁保证线程安全
        if(uniqueInstance==null){
            synchronized(Singleton.class){
                if(uniqueInstance==null){
                    uniqueInstance = new Singleton();
                }
            }
        }
        return uniqueInstance;
    }
    
    
    public static void main(String []args){
            Singleton s1 = Singleton.getUniqueInstance();
            Singleton s2 = Singleton.getUniqueInstance();
            if(s1.equals(s2)){
                System.out.println("Equals.");    
        }
    }
}