小小单例模式

          在做个人版收费系统的时候,我们引用了抽象工厂模式,但是在B层调用工厂层的时候,我们往往都是每调用一次,就new一次,new是 比较耗费的一种操作。所以这时候我们就需要去考虑,能不能只实例化一次工厂层,且由工厂层考虑是否需要去实例化的问题,而不需要B层去判断,B层只负责去使用它就OK了。 

   单例模式就很好的解决了这个问题。 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。

   通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

 

 

代码解析:

 

 

 

简要的说:

1.某个类只有一个实例

2.该类必须自行创建这个实例

3.它必须自行向整个系统提供这个实例


   生活例子:单例模式就好比是韦小宝是他八个老婆的共同相公。他的八个老婆只要说道“相公”,都是指的同一个人(韦小宝)。 


   虽然说单例模式很好解决了系统性能上的问题,  但是同时也会造成很多的问题,比如说单例模式造成了一个类的负担过重,这就违背了设计模式的单一职责原则。另外还有的就是再使用单例的时候,我们往往就要舍弃成员变量状态变化的情况。

    例如:

   有A和B同时去访问某一个Class,并且将2和3数值分别赋给A和B,这时A和B都需要去实例化这个Class,如果不使用单例模式,那么A和B分别生成两个Class对象,都各自拿到了属于自己的数值(2和3)。 

    采用了单例模式之后,A实例化生成了Class对象,得到了2的数值。而B是后继者,与A生成的是同一个Class对象,因为B需要赋值3,所以B的数值就会覆盖A的数值。这也是使用单例模式的前提。

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值