`
giraffeql
  • 浏览: 16743 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常用设计模式

阅读更多
1.单例设计模式
	(1)饿汉式
	public class Single{
		// 2.创建唯一对象
		private static Single s = new Single();
		// 1.私有构造函数,防止创建对象
		private Single(){}
		// 3.提供公有的访问方式
		public static Single getInstance(){
			return s;
		}
	}
	(2)懒汉式(延迟加载方式)
	class Single{
		private static Single s = null;
		private Single(){}
		public Static Single getInstance(){
			// 双重判断,既能保证同步,有能提高运行效率
			if(s == null){
				synchronized(Single.class){
					if(s == null){
						s = new Single();
					}
				}
			}
			return s;
		}
	}
分享到:
评论
2 楼 giraffeql 2012-11-27  
敲木鱼的男孩 写道
补充两种方式的区别和优缺点:
预加载方法:在方法执行之前执行,如果创建对象要付出很大的代价,不建意使用预加载方法。
延迟加载:在方法体内创建对象存在线程问题,要为生成对象语句实现同步如下
public static Single getInstance() {
	if (s == null) {
		synchronized (Single.class) {
			if (s == null)
				s = new Single();
		}
	}
	return s;
}

并进行两重判断s是否为空
说的有什么不足之处请指教。


嗯,谢谢补充!
1 楼 敲木鱼的男孩 2012-11-26  
补充两种方式的区别和优缺点:
预加载方法:在方法执行之前执行,如果创建对象要付出很大的代价,不建意使用预加载方法。
延迟加载:在方法体内创建对象存在线程问题,要为生成对象语句实现同步如下
public static Single getInstance() {


if (s == null) {
synchronized (Single.class) {
if (s == null)
s = new Single();
}
}
return s;
}
并进行两重判断s是否为空
说的有什么不足之处请指教。

相关推荐

Global site tag (gtag.js) - Google Analytics