A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 朱磊zl 中级黑马   /  2015-6-17 13:07  /  299 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  
   

单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个
方面的作用:
  
     
1
、控制资源的使用,通过线程同步来控制资源的并发访问;

     
2
、控制实例产生的数量,达到节约资源的目的。
  
     3
、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不
相关的两个线程或者进程之间实现通信。

  
   
单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。

单例模式有一下特点:

1
、单例类只能有一个实例。
  
2
、单例类必须自己创建自己的唯一实例。

3
、单例类必须给所有其他对象提供这一实例。
  
一、懒汉式单例
  
在类被加载的时候,唯一实例已经被创建。这个设计模式在
Java
中容易实现,在别的语言
中难以实现。

/**  
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-9-11
* Time: 14:57:08  
* <>
单例模式
-
懒汉式单例

*/  
public class LazySingleton {
     
/**  
      
*
私有静态对象
,
加载时候不做初始化

      
*/  
     
private static LazySingleton m_intance=null;
     
/**  
      
*
私有构造方法
,
避免外部创建实例

      
*/  
     
private LazySingleton(){
     
}
     
/**  
      
*
静态工厂方法
,
返回此类的唯一实例
.  

      
*
当发现实例没有初始化的时候
,
才初始化
.
      
* @return LazySingleton
      
*/  
     
synchronized public static LazySingleton getInstance(){
         
if(m_intance==null){  
            
m_intance=new LazySingleton();
         
}  
         
return m_intance;
     
}
}  
二、饿汉式单例
  
在类加载的时候不创建单例实例。
只有在第一次请求实例的时候的时候创建,
并且只在第一
次创建后,以后不再创建该类的实例。

/**  
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-9-11
* Time: 14:45:25  
* <>
单例模式
-
饿汉式单例

*/  
public class EagerSingleton {
     
/**  
      
*
私有的
(private)
唯一
(static final)
实例成员
,
在类加载的时候就创建好了单例对象

      
*/  
     
private static final EagerSingleton m_instance = new EagerSingleton();
     
/**  
      
*
私有构造方法
,
避免外部创建实例

      
*/  
     
private EagerSingleton() {
     
}
     
/**  
      
*
静态工厂方法
,
返回此类的唯一实例
.
      
* @return EagerSingleton
      
*/  
     
public static EagerSingleton getInstance() {
         
return m_instance;
     
}
}  

2 个回复

倒序浏览
不错不错,学习中。。。。。。。
回复 使用道具 举报
这长,这多是知识,的看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马