设计模式-单例

定义

确保一个类只有一个实例,并提供一个全局访问点

类图

设计模式-单例
构成:

  1. 私有构造器
  2. 静态方法
  3. 静态变量

代码

基础版

public class Singleton{          //利用静态变量来记录Singleton类的唯一实例     private static Singleton uniqueInstance;          //声明私有构造器,私有在Singleton类中才可以调用该方法     private Singleton(){}          //实例化对象,并返回该示例     public static Singleton getInstance(){         if(uniqueInstance==null){             uniqueInstance=new Singleton();         }         return uniqueInstance;     } } 

基础版的缺点?
多线程会实例化出多个对象。

  • 如果现在有多个线程,并且都在未实例化对象前进入,则都不满足uniqueInstance==null的条件,那么就会根据线程创建出多个实例对象。

解决线程问题版本

同步getInstance方法

public class Singleton{          private static Singleton uniqueInstance;          private Singleton{};          private static synchornized Singleton getInstance(){         if(uniqueInstance==null){             uniqueInstance=new Singleton();         }         return uniqueInstance;     } } 

更改点:

版权声明:玥玥 发表于 2021-06-01 19:33:04。
转载请注明:设计模式-单例 | 女黑客导航