java设计模式之单例模式随笔
Java模式之单例模式:
凡是看单例模式,都会看到两种经典的结构:
- 饿汉式
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 }
懒汉式其实是一种比较形象的称谓。既然懒,那么在创建对象实例的时候就不着急。会一直等到马上要使用对象实例的时候才会创建,懒人嘛,总是推脱不开的时候才会真正去执行工作,因此在装载对象的时候不创建对象实例。(摘自http://www.2cto.com/kf/201204/125917.html)
3.两种的区别与优点:
饿汉,由于类被加载的时候就创建实例,所以它相对会减少运行时间;
懒汉式,由于对获取实例的 getInstance()方法加 synchroized(锁) 所以它是线程安全的,所以在执行多个线程的时候,它会一个个执行,所以在运行速度上回相对慢;相反,也正因为这样每当线程进入的时候才会创建实例,所以会节省空间。
个人理解:(暂时)单例模式,只有在多线程下有意义,在顺序结构的程序中并没有多大意义。目前工作接触多线程的机会不多,所以这方面理解不太深。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。