浅谈设计模式之单例模式

  单例模式,可以说是众多设计模式中的最简单的一种的设计模式。因为它更易于理解和更易于掌握。

  一、单例模式最核心的思想:Ensure a class has only one instance, and provide  a global point of access to it.(为了确保一个类只有一个实例(对象),并且为这个对象提供一个全局访问点)

  二、个人理解:就是在整个程序运行的过程中该类的实例只会被创建一次,一旦被创建,以后都不能被创建一个新的实例也即是该类的实例是独一无二的,类似古代的君王独一无二,无可替代的。

 三、思考分析:我们紧紧围绕着它的思想找突破点,它的意思就是保持这个类只能有一个对象。

 那么我们如何去确保一个类只能创建一个对象了,也即是保证这个类的对象只能被创建一次???
 我们可以这样想:我们都知道要想创建一个对象,最直接最必须的方法就是通过这个构造方法来创建,然后直接通过new关键字就可以,也即是我们创建多次该类对象,就new几次。所以我们必须控制这种构造器泛滥使用,从而保证我们单例模式的类对象只能被创建一次。所以就索性断绝或者说屏蔽了外部直接通过new方式来泛滥或者说任意地创建多个

对象。所以就想到了:  

 1、控制单例模式下该类的构造方法权限(private 私有化),从而屏蔽了外部泛滥地创建该类的对象权利,切断所有外界创建该类对象途径或者说接口,(因为构造器是创建对象的唯一途径,构造方法加了private修饰词后,外部是没有权限创建该类的对象的)。-------------(关键点一:该类的构造器私有化)

但是这样的话问题来了,因为屏蔽了所有外部创建该类的对象途径,但是我们又需要创建一个唯一的对象实例,那怎么办呢??憋慌,既然外部不能创建,那么我们就从内部开始

创建。

2、既然是独一无二的,那么不是谁都能访问到的,就像古代的皇帝一样,独一无二的,并不是谁想见都能见到的。但是外部的人又必须去向皇帝报告一些事情,他只能间接地通过皇帝身边的人,内部人员间接把信息传达给皇帝。我们的单例模式也是如此外部是不能直接访问该类的对象,所以该类的唯一对象必须私有化(private),还有一个就是static静态的(为什么是static后面解释)外部是不能直接访问该对象的引用的,否则可以访问的话,那么这个对象的引用可以被任意的修改。所以需要给该对象的引用私有化-----(关键点二:设置一个私有的静态的该类对象的引用)

3、那么问题又来了,就是你好不容易在内部创建的一个该类的对象,还被设置成private外部不能访问,我们要能全局被访问???
 既然外不能访问的话,我们就直接在内部访问,并且提供一个方法(这个方法就相当于皇帝身边人),但是这个方法必须是全局访问的所以需要static静态的,(到了这里我想你应该明白了为什么该类的对象要静态,因为这个方法是静态的,静态的方法只能访问静态的变量),供外部访问,从而实现了外部间接访问这个对象。一个public权限的static静态方法(为了设置一个全局访问点)来返回这个已经在内部创建好的对象,也就是对于外部而言
暴露这个方法,供外部访问,这也是外部访问该对象的唯一途径(唯一一个访问点)。---------(关键点三:设置一个公有的静态的方法,访问内部对象,并把间接把
该内部对象返回给外部,从而使得外部要得到该对象,只能通过调用该方法,才能访问到该对象。)

四、总结:

1、该类的构造器私有化 
2、设置一个私有的静态的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊喵先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值