设计模式-单例模式

266 阅读1分钟

在软件开发中,很多情况需要用到永远只有一个入口,比如抢票软件、摇号软件、网购中抢商品等,只要跟排队挂钩的需求,都需要做到保证程序整个生命周期都只有一个入口或者说只有一个实例,单例模式正好是解决此问题的最好设计模式。

//编写一个单例对象
public class Single{
   //防止外部去创建单例对象,我们必须让构造函数是私有的。
   private Single(){
   }
   //记录单例对象实例,使用私有来声明,防止外部去修改
   private static Single instance = null;
   //声明一个私有静态变量,用于同步锁,防止实例被意外创建多次
   private static object locker = new object();
   //给外部一个获取单例实例对象入口
   public static Single getSingle() {
       //判断实例是否被第一次get
       if(instance == null) {
           //同步锁
           lock(locker) {
               //防止高并发的情况下第一次get时卡在同步锁处
               if(instance == null) 
                  instance = new Single();
               return instance;
           }
       }
       //如果不是第一次,直接返回实例
       return instance;
   }

}