学习单例模式

1、单例模式是怎样产生的?

      当想要让一个定义类只能实例化一个对象,则不能对外提供public的构造方法,而是要把构造方法定义为private的,这样就可以让定义类自己控制类的实例化。同时,也要对外提供一个public的方法,用来得到定义类的实例。当然,在定义类的内部需要初始化来创建自身的一个实例(保证这个实例必须是唯一的)。

2、单例模式中,需要做哪些工作?

      由1所述的来一步一步分析:在一个类(Singleton)中,首先保证构造方法是private的,private Singleton(){};

其次,通过初始化来创建实例,在类中声明一个静态的引用(这个静态引用只在类加载的时候初始化一次),private static Singleton singleton= null; ,然后通过一个静态代码块来得到一个唯一的实例(如果引用singleton为null就创建一个实例,如果不是null,则不做任何处理,也就是沿用已经存在的实例),

static {
      if(singleton == null) {
            singleton = new Singleton();
      }
}
;

再次,我们就要对外提供一个方法来访问类的唯一实例(这个方法必须是静态的,否则外部没法访问这个方法),

public static Singleton getInstance() {
      return singleton;
}
这样就完成了单例模式的工作。

3、根据以上两点,总结运用单例模式的步骤。

      一、私有构造方法;

      二、声明一个静态的,私有的引用;

      三、静态初始化一个实例,保证这个实例唯一;

      四、对外提供静态方法,用以访问唯一实例。

代码表现如下:

public class Singleton {

      private Singleton(){};  //第一步

      private static Singleton singleton= null;  //第二步

      static {                      //第三步
            if(singleton == null) {
                  singleton = new Singleton();
            }
      }

      public static Singleton getInstance() {  //第四步
            return singleton;
      }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值