黑马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培训、期待与您交流! ----------------------