在创建型设计模式中,我们第一个学习的是单例模式(Singleton Pattern),这是设计模式中最简单的模式之一。
单例是什么意思呢?
单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并且在系统全局都可以访问这个对象而不用重新创建。
一、单例模式的基本写法
单例模式示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
使用:
1 2 |
|
分析SingleObject类的特征:
- SingleObject类的构造方法是私有的,这样可以保证只能在SingleObject类内部才能创建对象,而无法在类外部创建SingleObject对象。
- SingleObject类中有一个instance成员属性,它用来持有这个SingleObject对象。
- SingleObject类提供了一个静态方法getInstance,它可以让我们在任何可以访问到SingleObject类的地方,都可以使用
SingleObject.getInstance()
来获取到这个SingleObject对象。
二、单例模式的作用
单例模式有什么用呢?
1. 控制对象的数量
当你编写了一个类提供给其他人调用时,对方看到是一个类,很有可能第一反应是尝试new一下。
你自己编写的类你自己是清楚如何使用的,在整个系统内这个类只需要创建一个对象就够了,但对方可能并不清楚。
这时候你可以把这个类编写为单例形式,把构造方法私有化,让对方无法通过new来创建对象,只能使用getInstance来获取。
这个模式可以帮助你有效的控制对象的数量,毕竟,有的类其内部实现复杂,如果频繁创建销毁对象,可能还是很耗费服务器资源的。
2.全局访问
单例模式的特点是单例类自己持有这个单例对象,并且提供一个静态方法可在全局获取到这个单例对象。
如果没有单例模式的情况下,我们一般是在代码A处创建这个对象,在代码B处如果也要使用这个对象,就需要将这个对象进行参数传递。为了避免传来传去,我们可能会写个Holder类,把这个对象放在Holder的成员变量中。
而单例模式的这个优点是,我们可以避免这样的困扰,直接从单例类中获取。
来源:https://www.weidianyuedu.com