单例设计模式

单例设计模式

单例设计模式的引出

当构造方法私有化时,无法从外部进行构造方法的调用。在保证所有方法都不修改的方法时,要求让类进行适当的变化可以从外部得到类的实例化对象并且代用一般方法。
分析一:最主要的是构造方法是private的所以根据private的属性我们可以想到,在本类准备好一个实例化对象.
分析二:然而此时申明的对象是类的普通属性,必须要实例化才能使用,那么就考虑使用static,因为static不受到实例化对象的控制.
分析三:类中的属性都要进行private封装,所以此时申明的对象如果封装了,就必须要通过方法访问,那么此时要访问的static属性,并且类无法直接在外部产生实例化对象,
那么编写一个Sstatic方法就好了
分析四:这么写代码折腾一圈目的还是在外部实例化对象,调用方法,脱裤子放屁的意义在哪?意义在于不管外部有多少个对象声明,最终所能够产生的实例化对象只有一个,所以叫单例

单例设计模式_第1张图片
image.png

分析四:有缺陷,要加一个final关键字,加一个final的意义在于,如果在getInstance()方法里这么写
public static Singleton getInstance(){
instance=new Singleton();
return instance;
}
会发生逻辑错误,每次返回的都是新的实例,单例模式不存在

单例设计模式的特点

构造方法私有,外部无法实例化,只能通过类提供的static方法取得唯一的一个引用

单例设计模式的两种形式

  • 饿汉式:不管程序中是否有对象需要使用此类, 那么此类的对象都要实例化好
  • 懒汉式:在第一次使用的时候才进行实例化
单例设计模式_第2张图片
image.png

你可能感兴趣的:(单例设计模式)