首页 > 代码库 > java设计模式之单例模式随笔

java设计模式之单例模式随笔

Java模式之单例模式:

  凡是看单例模式,都会看到两种经典的结构:

  1. 饿汉式
1 public class EagerSingle {2    private static EagerSingle instance = new EagerSingle();  3    public static EagerSingle getInstance() {4      return instance;  5     }   6 }

  之所以称为饿汉式,是因为在类被加载的时候,静态变量 instance 会直接被初始化。

 2. 懒汉式

 1 public class LazyStringlet { 2      private static LazySingle instance = null;    3      /** 4         * 静态工厂方法 5         */    6     publice static synchronized LazySingle getInstance() { 7          if(instance == null) { 8          instance = new LazySingle();    9        }   10         return instance;11     }12 }    
View Code

  懒汉式其实是一种比较形象的称谓。既然懒,那么在创建对象实例的时候就不着急。会一直等到马上要使用对象实例的时候才会创建,懒人嘛,总是推脱不开的时候才会真正去执行工作,因此在装载对象的时候不创建对象实例。(摘自http://www.2cto.com/kf/201204/125917.html)

 3.两种的区别与优点:

  饿汉,由于类被加载的时候就创建实例,所以它相对会减少运行时间;

  懒汉式,由于对获取实例的 getInstance()方法加 synchroized(锁) 所以它是线程安全的,所以在执行多个线程的时候,它会一个个执行,所以在运行速度上回相对慢;相反,也正因为这样每当线程进入的时候才会创建实例,所以会节省空间。

 

  个人理解:(暂时)单例模式,只有在多线程下有意义,在顺序结构的程序中并没有多大意义。目前工作接触多线程的机会不多,所以这方面理解不太深。

java设计模式之单例模式随笔