频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
设计模式之单例模式
2017-01-09 09:50:46      个评论    来源:tall_fish的博客  
收藏   我要投稿

设计模式之单例模式:单例模式保证一个类只有一个实例,并提供一个访问它的全局访问点。为了保证一个类只有一个实例,那么就要防止类的构造函数中会在被外部调用的时候构造出新的实例。

所以就要将构造函数的访问权限标记为private或者protected,然后提供全局访问点,返回类内部唯一构造的实例。

class Singleton{
    //声明单例对象是静态的
    private static Singleton single = null;
    //构造函数是私有的
    private Singleton(){};
    //通过静态方法来构造对象
    public static Singleton getInstance(){
        //判断单例对象是否已经被构造
        if(single == null){
            single = new Singleton();
        }
        return single;
    }
}

上面的单例模式实现无法保证在多线程的情况下正常执行,所以需要加上同步标志。

class Singleton{
    //声明单例对象是静态的
    private static Singleton single = null;
    private static Object obj = new Object();
    //构造函数是私有的
    private Singleton(){};
    //通过静态方法来构造对象
    public static Singleton getInstance(){
        //提高效率
        if(single == null){
            //加线程锁
            lock(obj){
                //判断单例对象是否已经被构造
                if(single == null){
                    single = new Singleton();
                }   
            }
        }
        return single;
    }
}

单例是为了保证系统中只有一个实例,其关键点有:

私有构造函数 声明静态单例对象 构造单例对象之前要加锁(lock一个静态的object对象) 需要两次检测单例实例是否已经被构造,分别在锁之前和锁之后
点击复制链接 与好友分享!回本站首页
上一篇:ClassLoader详解及用途
下一篇:leetcode 26题目解答
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站