创建型设计模式:单例设计(Singleton Pattern)

目录

什么是设计模式?

什么是单例设计模式?

单例设计模式特点

单例设计模式优点

Java实现单例模式

饿汉式单例

懒汉式单例

适用场景

单例模式注意事项


什么是设计模式?

设计模式:是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

通俗来讲就是之前很多程序员经常无数次的尝试,总结出来一套最佳实践

什么是单例设计模式?

通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。 即一个类只有一个对象实例

单例设计模式特点

1.单例类只能有一个实例。

2.单例类必须自己创建自己的唯一实例。

3.单例类必须给所有其他对象提供这一实例。

单例设计模式优点

1.控制资源的使用 。

2.控制实例的产生数量,达到节省资源目的。

3.作为通信媒介,数据共享 。

Java实现单例模式

单例模式根据实例化对象时机的不同分为两种一种是饿汉式单例,一种是懒汉式单例

饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;

懒汉式单例在调用取得实例方法的时候才会实例化对象。

代码如下:

饿汉式单例

class ToolUtil{
	//1.必须在该类中创建一个对象出来
	private static ToolUtil instance = new ToolUtil();
	//2.私有化自己的构造器,防止外界通过构造器来创建新的对象
	private ToolUtil() {}
	//3.给外界提供一个方法,能够获取已经创建好的对象
	static public ToolUtil getInstance() {
		return instance;	
	}
	public void show() {
	
	}
}

懒汉式单例

class ToolUtil{
	
	private static ToolUtil instance;
	
	private ToolUtil() {}

	static public synchronized ToolUtil getInstance() {
        if(singleton==null){
            instance = new ToolUtil();
        }
		return instance;	
	}
	public void show() {
	
	}
}

适用场景

由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。

适合使用单例模式的场景:

  1. 需要频繁实例化然后销毁的对象。
  2. 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
  3. 有状态的工具类对象。
  4. 频繁访问数据库或文件的对象。
  5. 以及其他我没用过的所有要求只有一个对象的场景。

单例模式注意事项

  1. 只能使用单例类提供的方法得到单例对象,不要使用反射,否则将会实例化一个新对象。
  2. 不要做断开单例类对象与类中静态引用的危险操作。
  3. 多线程使用单例使用共享资源时,注意线程安全问题。

 

如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页