java设计模式学习笔记-单例模式

该模式有1个成员:单例模式工厂

单例模式分两种类型:饿汉模式、懒汉模式

饿汉模式

package model04.single.factory;


public class HungrySingle{
	private static HungrySingle single = new HangrySingle();
	
	private HungrySingle(){}
	
	public static HungrySingle getInstance(){
		return single;
	}
}

懒汉模式

package model04.single.factory;


public class LazySingle{
	private static LazySingle single = null;
	
	private LazySingle(){}
	
	public static synchronized  LazySingle getInstance(){
		if(single == null){
			single = new LazySingle(); 
		}
		return single;
	}
}

两种单例模式的区别:

饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的

从实现方式来讲他们最大的区别就是懒汉式是延时加载,他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建

单例模式的优缺点

优点

1:使用合适的中间件,可以把singleton模式扩展为跨多个JVM和多个计算机工作
2:只需把一个类的构造函数变成私有的,并且在其中增加相应的静态函数和变量,就可以把这个类变为singleton
3:给定一个类,可以创建它的一个singleton子类
4:如果singleton从未使用过,那么就绝不会创建它

缺点

1:没有好的方法去摧毁一个singleton,或者解除其责任
2:从singleton派生的类并不是singleton。如果要使其成为singleton,必须要增加所需的静态函数和变量
3:每次调用instance方法都会执行if语句,多余
4:singleton的使用者知道它们正在使用一个singleton ,因为它们必须要调用instance方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值