Java常用设计模式-单例模式

454 阅读1分钟

现实生活中,我们常常会发现有些事物是唯一的。例如某个商店有且只有一个老板

在Java中,我们会创建商店类老板类,并在商店中实例化老板实例。

/**
 * 商店
 */
public class Shop {

   public static void main(String[] args) {
      Master master1 = new Master();
      Master master2 = new Master();
   }

}

问题是,一个商店类里面还是可以实例化多个老板,这不符合要求。

单例模式就是为了解决这个问题,保证有且只有一个实例存在。

首先在老板类中创建一个唯一的私有静态实例(在单例类中先实例化自己),并把构造方法变为私有,这样别人无法实例化这个类,最后再写一个公开静态方法返回实例即可,具体看代码:

/**
 * 老板
 */
public class Master {

   /**
    * 创建一个静态私有老板实例,这就是唯一实例
    */
   private static Master master = new Master();

   /**
    * 私有化构造函数使得外部无法实例化老板类
    */
   private Master() {

   }

   /**
    * 访问方法使得外部可以访问那个唯一的实例
    */
   public static Master getInstance() {
      return master;
   }

}

然后就可以使用getInstance方法进行访问了:

/**
 * 商店
 */
public class Shop {

   public static void main(String[] args) {
      Master m = Master.getInstance();
   }

}

通过这种方式,我们调用的老板实例永远只有一个,也就是Master类中的那个唯一的实例。