天天看點

黑馬程式員之設計模式—單例設計模式

</pre><span style="font-family:Simsun; font-size:14px"></span><div style="text-align:center">  ------- <a target=_blank target="_blank" href="http://www.itheima.com/" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >android教育訓練</a>、<a target=_blank target="_blank" href="http://www.itheima.com/" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >java教育訓練</a>、期待與您交流! ----------</div><div style="text-align:center"></div><p></p><p><span style="font-family:微軟雅黑; font-size:14px; line-height:30.796875px"></span></p><p><span style="font-family:微軟雅黑; font-size:14px; line-height:30.796875px"><strong>設計模式的概念 :</strong></span></p><p><span style="font-family:微軟雅黑; font-size:14px; line-height:30.796875px"><span style="font-family:Arial; font-size:14px; line-height:26px">解決某一問題最行之有效的方法。</span></span></p><p><span style="font-family:Arial"><span style="font-size:14px; line-height:26px">Java工程師為程式員提供了23中設計模式 。</span></span></p><p><strong>首先介紹Java中的單例設計模式 :</strong></p><p></p><p></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">單例設計模式的作用:使一個類在記憶體中隻存在一個對象。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">用代碼實作單例設計模式需要做三部:</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">        1</span>、将構造函數初始化。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">              </span>例:<span style="font-family:'Times New Roman'">private Single(){}</span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">        2</span>、在類中建立一個本類對象。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">              </span>例:<span style="font-family:'Times New Roman'">private static Single s= newSingle</span>();</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">        3</span>、提供一個通路方法可以擷取到該對象。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">              </span>例:<span style="font-family:'Times New Roman'">public static Single getInstance</span>()</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">                     {</span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">                            returns;</span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">                      }</span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">單例設計模式隻是為了保證記憶體中的對象唯一,其他在類中該怎麼描述嗎,還是怎麼描述。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">單例設計模式有兩種寫法:</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><span style="font-family:'Times New Roman'">        1</span>、餓漢式:也就是剛三部中的示例語句。它的特點是先初始化對象。如:<span style="font-family:'Times New Roman'">Single</span>類一進記憶體,就已經建立好了對象。在實際開發中,出于安全考慮,建議使用餓漢式。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">完整代碼如下:</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"><pre name="code" class="java">
[java] view plaincopy
class Single  
{  
     private static Single s=new Single();  
     private Single(){}  
     public static Single getInstance()  
     {  
          return s;  
     }  
}  
           

2、懶漢式:它的特點對象是方法被調用時,才初始化,這也叫對象的延時加載。如:在以下完整代碼中,Single類進記憶體,對象還沒有存在,隻有調用了getInstance()方法時,才建立對象。

完整代碼如下:

[java] view plaincopy
class Single  
{  
     private static Single s=null;  
     private Single(){}  
     public static Single getInstance()  
     {  
          if(s==null)   
               s=new Single();  
          return s;  
     }  
}