天天看点

黑马程序员之设计模式—单例设计模式

</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;  
     }  
}