码迷,mamicode.com
首页 > 其他好文 > 详细

单利模式-singleton

时间:2015-11-09 19:23:24      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

1.    什么是单利模式?
       一个类有且仅有一个实例,并且自行实例化向整个系统提供。
2.   特点
     a.  一个类只有一个实例
     b.  必须自行创建该实例
     c.  必须自行想整个系统提供该实例
     d.  不能被继承
3.   单利模式的作用?
      保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。

4.   单利模式实现方式?
      a. 饿汉式     
        
public class Singleton {  
    private static EagerSingleton instance = new EagerSingleton();
    private Singleton() { //私有构造函数  }    
    public static EagerSingleton getInstance()
    {
        return instance;
    }    
}
     b. 懒汉式
        // 懒汉式---存在线程安全问题---会产生多个实例
 
public class SingletonClass{
        private static SingletonClass instance=null;
        private SingletonClass(){}
        public static SingletonClass getInstance(){
        if(instance==null){
           instance=new SingletonClass();
            }
        }
        return instance;
        }
    }



    // 懒汉式---不存在线程安全问题------效率比较低
   
public class SingletonClass{
        private static SingletonClass instance=null;
        private SingletonClass(){}
        public static synchronized SingletonClass getInstance(){
        if(instance==null){
           instance=new SingletonClass();
            }
        }
        return instance;
        }
    }



    // 懒汉式---不存在线程安全问题-----效率高
  
public class SingletonClass{
        private static SingletonClass instance=null;
        private SingletonClass(){}
        public static SingletonClass getInstance(){
        if(instance==null){
            synchronized(SingletonClass.class){
            if(instance==null){
                instance=new SingletonClass();
            }
            }
        }
        return instance;
        }
    }



    说明:synchronized方法与synchronized代码快的区别
         synchronized methods(){} 便于阅读理解;
     synchronized(this){}可以更精确的控制冲突限制访问区域,有时候表现更高效率。
5.   单利模式实现方式的区别:
     饿汉式:在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
     懒汉式:在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
6.   单利模式应用:
     a. 在线人数;
     b. windows任务管理器----只能打开一个;
     c. windows回收站;
     d. 应用程序的日志应用---在整个系统运行过程中,回收站一直维护者仅有的一个实例;
     e. web应用的配置对象的读取---配置文件是共享的资源;
     f. 数据库连接池的设计---采用单例能节省打开或关闭数据库连接所引起效率损耗;
   


单利模式-singleton

标签:

原文地址:http://my.oschina.net/u/1989867/blog/528151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!