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(锁) 所以它是线程安全的,所以在执行多个线程的时候,它会一个个执行,所以在运行速度上回相对慢;相反,也正因为这样每当线程进入的时候才会创建实例,所以会节省空间。

 

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。