小华的故事--单例模式

昨日,从新温习了一下工厂模式和单例模式。设计模式

而且从新认识了设计模式,在学校期间接触过设计模式。学习

可是,在那个时期,学设计模式只是单纯的学习理论知识而已。spa

ps:顺便吐槽一下,上学期间学习的东西,大多数的状况会在将来的某个时间点彻底遗忘掉。设计

最根本的缘由在于,那个时期说学习的东西更偏重与理论,理论这种东西,只是潜移默化的告诉你“我知道这个”。code

可是,当你真正开始用这个东西的时候发现无从下手。这也就形成了大学生找工做眼高手低的现象。对象

(以上纯属我的观点)blog

-------------------------------------------------回到正题-------------------------------------------------------------get

先讲一下单例模式的我的理解:同步

单例模式,顾名思义,就是在一个运行机制(应用程序)中,一个class类只有一个实例的存在。class

下面以小华的故事做为主线,讲一下单利模式的三种实现,若是理解有误,欢迎指出。

 

在小华初中的时候电脑尚未那么普及,小华很是想玩电脑(去QQ农场偷个菜什么的(●'◡'●)),

刚好,邻居大土豪给儿子买了一台,因而乎小华就去了~~~可是,小华发现有好多人都和小华同样在等着玩电脑。

小土豪说:大家先等我玩完了!在去决定谁来玩。

基于这种思考,就开始实现讲关于小华的故事--单例模式:

小华的故事一、

开始时,小华的邻居大土豪买了一台电脑:

private static Singleton instance = new Singleton(); 

小土豪说这是个人电脑:

private Singleton(){   
       
  }  

小土豪玩累了,让给下一我的来玩:

private static Singleton getInstance(){   
        return instance;   
    }  

那个时候电脑就是精神的粮食,而你们很是须要这种粮食,能够说是很是饿。

因此,上面说实现的这种单例模式成为“饿汉模式”。

小华的故事二、

后来,小华认识了一个豪友,豪友也有电脑:

private Singleton(){   
       
}  

豪友早就玩腻了电脑,电脑就放在那里也不开机,

private static Singleton instance;     

可是,对于小华来讲怎么能让电脑就这么放着浪费呢?!

豪~电脑可玩乎~~~,豪友很大方---随便玩!

public static Singleton getInstance(){      
        if(instance == null){      
            return instance = new Singleton();      
        }else{      
            return instance;      
        }      
    }    

有个豪友是多么重要啊!

不用像饿汉同样,每天等着小土豪玩完再玩。能够很慵懒的想玩就玩。因此,这种慵懒的生活就叫作“懒汉模式”。

小华的故事三、

好景不长,豪友的表弟暑假要在豪友家住,摆明了就是为了玩电脑去的。

电脑仍是豪友的电脑:

private Singleton(){   
       
 }  

豪友通常仍是不怎么玩,电脑一如既往的闲着:

private static Singleton instance;     

可是,小华却有了顾及。先要看电脑有没有人再用。

难免会发生这样一种状况,小华打开电脑的同时,豪友的表弟也进来要玩电脑。

豪友也是够仗义,告诉表弟电脑锁上了密码忘了,你先出去玩去吧!等电脑好了再叫你。

 public static Singleton getSingle(){    //外部经过此方法能够获取对象     
    if(single == null){      
        synchronized (Singleton.class) {   //保证了同一时间只能只能有一个对象访问此同步块         
            if(single == null){       
                single = new Singleton();           
        }      
      }   
    }     
    return single;   //返回建立好的对象    
  }   

这样,豪友骗表弟电脑锁住了,就是所谓的“双重锁模式”。

这就是小华的故事--单例模式。

相关文章
相关标签/搜索