1. 单例设计模式
1.1. 单例设计(singleton)模式介绍
1.1.1. 设计模式:
就是对一些常见问题进行归纳总结,并针对具体问题给出一套通用的解决办法(强调的是解决问题的思想);在开发中,只要遇到这类问题,就可以直接使用这些设计模式解决问题;
最早起源于建筑领域,在建筑领域把一些问题和经验进行归纳总结,形成一套可以用来在建筑领域解决大多数问题的方案;
后来计算机领域借鉴了建筑领域的设计模式,把计算机领域中经常遇到的问题进行归纳和总结,形成计算机领域23中设计模式;
1.1.2. 单例(单态、原子)设计模式:
单例设计模式:解决的就是在程序运行过程中,一个类最多只能创建一个对象 的问题;
生活中的单例:太阳,就是一个单例;
1.2. 单例设计模式的实现
1.2.1. 单例代码实现
需求:使用Java代码描述太阳,要求最多只能创建一个对象;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | /** * Sun * 表示太阳的类 * @author 快学大数据 * 2018年6月15日 下午3:10:33 */ public class Sun { /* * 思考:这个类,要求最多只能创建一个对象; * 分析对象创建过程,发现,创建一个对象,需要使用new关键字和构造函数, * 所以应该从new关键字和构造函数这两者上想办法; * new关键字,是Java内置的一个关键字,程序员不能控制,所以只能控制构造函数, * 不让其他地方随意使用; * 使用private关键字修饰构造函数,这个类之外的地方就自然不能使用; */ private Sun() {} /* * 思考:单例不是没有对象,而是最多创建一个对象,就是还需要创建一个对象出来; * 因为构造函数私有了,外界都不能使用,所以这个对象应该在这个类里面创建; * 创建好的对象,需要使用一个成员变量保存; * 保存这个唯一对象的成员变量,需要是静态的,而且为了安全,应该私有化。 */ private static Sun ss = new Sun(); /* * 因为保存 这个对象的变量被封装了,外界不能访问到, * 所以应该提供一个公开的get方法,供外界使用; * 又因为外界在调用这个方法获取sun对象之前,没有Sun的对象, * 所以不能通过对象调用这个方法,所以这个方法应该用static修饰 */ public static Sun getSun() { return ss; } } |