黑马Java学习笔记之-----单例模式

---------------------- android培训java培训期待与您交流! ----------------------

 

单例模式:

  单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

特点:
       1,一个类只能有一个实例
       2,自己创建这个实例
       3,整个系统都要使用这个实例

 

保证唯一性的思想及步骤:

**为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化

**为了其他程序访问到该类对象,须在本类中创建一个该类私有对象

**为了方便其他程序访问到该类对象,可对外提供一个公共访问方式

两种形式:


1、饿汉式单例类:当类加载的时候就创建对象

 1 class EagerSingleton {    
 2   private static final EagerSingleton m_instance = new EagerSingleton();    
 3    
 4   /** * 私有的默认构造函数,仅供内部调用*/   
 5   private EagerSingleton() {    
 6    }    
 7    
 8    /** *这里提供了一个供外部访问本class的静态方法,可以直接访问*/   
 9   public static EagerSingleton getInstance() {    
10     return m_instance;    
11    }    
12 }   

 

2、 懒汉式单例类当使用的时候才创建对象

 1 class LazySingleton {    
 2   // 注意,这里没有final    
 3   private static LazySingleton m_instance = null;    
 4    
 5   /** * 私有的默认构造函数 */   
 6   private LazySingleton() {    
 7    }    
 8    
 9 //使用时生成实例,提高了效率!
10   public synchronized static LazySingleton getInstance() {    
11     if (m_instance == null) {    
12        m_instance = new LazySingleton();    
13      }    
14     return m_instance;    
15    }    
16 }   

饿汉式和懒汉式的区别:

**

饿汉式是类一加载进内存就创建好了对象;

懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,

对象才开始创建。

**

注:

开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题

 


---------------------- android培训java培训期待与您交流! ----------------------

 

posted @ 2013-04-29 02:05  Mercy_K  阅读(109)  评论(0编辑  收藏  举报