首页 > 代码库 > java设计模式之单例模式随笔
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(锁) 所以它是线程安全的,所以在执行多个线程的时候,它会一个个执行,所以在运行速度上回相对慢;相反,也正因为这样每当线程进入的时候才会创建实例,所以会节省空间。
个人理解:(暂时)单例模式,只有在多线程下有意义,在顺序结构的程序中并没有多大意义。目前工作接触多线程的机会不多,所以这方面理解不太深。
java设计模式之单例模式随笔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。