创建型设计模式_单例模式(饿汉、懒汉、优化后的懒汉)

一、单例模式

1.是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

2.某个类只能有一个实例。

3.类必须自行创建这个实例。

4.以公共、统一的方式向整个系统提供这个实例。

二、单例模式的实现—饿汉式

//饿汉式:牺牲了空间资源,节约了时间效率,因为是立即加载。
public class HungrySingleton {
	private static HungrySingleton hungry_instance=new HungrySingleton();//用static修饰创建的对象,表示属于类,被类共享,只有一份。
	private HungrySingleton() {	//构造方法私有化,外部不能创建此对象了。
		
	}
	public static HungrySingleton getInstance() { //提供公有静态的方法获得实例对象,静态方法属于类的,通过类名.方法名访问
		return hungry_instance;
	}
}

三、单例模式-懒汉式

//懒汉式:节省了空间,降低了时间效率。
//延时加载,真正用到的时候再创建
public class LazySingleton {
	private static LazySingleton instance;//类初始化时,不初始化这个对象。
	private LazySingleton() {//私有化构造方法,是为了不让外部创建对象。
		
	}
	public synchronized static LazySingleton getInstance() {//静态方法,可以通过类名访问
		if(instance==null) {	//当没有实例对象时,才创建实例对象
			instance=new LazySingleton();
		}
		return instance;
	}
}

四、单例模式-静态内部类的懒汉式

//优化后的懒汉式:节省了空间,降低了时间效率。
//静态内部类形式,即实现了线程安全,又避免了同步带来的性能影响。
public class LazySingleton2 {
	private static class Inner{ //静态内部类,初始化只有一次。
		private static final LazySingleton2 instance=new LazySingleton2();
	}
	private LazySingleton2() {//私有化构造方法,是为了不让外部创建对象。
		
	}
	public static LazySingleton2 getInstance() {//线程安全,调用效率高,并且不会在外部类初始化时就直接加载,只有当调用了方法时才会加载,实现了延迟加载。
		return Inner.instance;
	}
}

四、测试结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值