单例设计模式(创建型模式)
单例设计模式:解决的就是对象在程序中是唯一的(对象开辟的空间只能有一个)
单例模式场景:
学生A在找老师解决问题时,学生B就无法再让解决问题,学生B只能等待老师解决完学生A的问题后,再帮助学生B解决问题(在这个场景中,只有一个老师对象)
单例设计模式的代码体现
之前讲解决单例设计模式时,单例是用来解决创建的对象只能有一个(唯一性)
怎么保证所创建的对象是唯一的呢?
问题1:在java中只要使用new就会创建对象,就可能创建多个对象,怎么创建一个对象呢?
反向思考:只要new这个类,就会出现多个对象。不让使用new就不会出现对象了
问题2: 不让使用new来创建对象了,那么对象怎么出现呢?最少还需要一个对象
在本类中创建属于本类自己的对象(出现了一个对象)
问题3: 本类中的对象是创建出来的了,但是只能本类中使用,那么其它的类也需要使用,这时怎么办?
封装:私有化成员变量,对外提供公开的访问方法
对外提供可以访问对象的方法
基于以上三点分析,实现程序中代码的书写:
问题1: 不让其它类创建对象了,怎么实现?
私有化构造方法
问题2: 其它类不能创建对象了,那么这个对象怎么出现?
在本类中创建一个本类自己的对象
问题3: 其它类怎么访问这个创建出来的本类对象?
对外提供public 方法
代码的体现:
单例设计模式存在的小问题
之前,书写的程序中,存在了一个小问题: 可以直接访问对象名
解决方案:把创建的本类对象私有化
解决方案:把创建的本类对象私有化
单例设计模式的另一种体现
单例设计模式有两种写法:饿汉式、懒汉式
案例:懒汉式单例模式
|
注意:在以后面试中或发开中使用懒汉比较多