黑馬程式員:單例設計模式

來源:互聯網
上載者:User

----------  
android培訓、java培訓、期待與您交流! ----------

java中存在23種設計模式,其中,單例模式確保某一個類只有一個執行個體,而且自行執行個體化並向整個系統提供這個執行個體。這個類稱為單例類

單例設計模式的要點:

1.類只能有一個執行個體

2.它能自行建立這個執行個體

3.必須向系統提供調用此執行個體的方法

如何確保對象的唯一性:

1.為了避免其他程式過多的建立該類對象,就必須禁止其他程式建立該類對象

2.為了讓其他程式可以訪問到該類對象,只好在本類中,自訂一個對象

3.為了方便其他程式對自訂對象的訪問,必須對外提供一些訪問方式

以上三點的代碼體現:

1.將建構函式私人化

2.在類中建立一個本類對象

3.提供一個方法可以擷取到該對象

在java中用代碼實現單例設計模式,在這我主要是分析兩種方法:懶漢式和餓漢式

餓漢式:關鍵代碼:
class Single{private  Single(){}private static Single s = new Single();public static  Single getInstance(){return s;}}

懶漢式:
關鍵代碼:
class Single{private static Single s = null;private Single(){}public static Single getInstance(){if(s==null){synchronized(Single.class){if(s==null)s = new Single();}}return s;}}

在後來的學習中,發現了枚舉也能實現單例設計,它利用的原理就在於,枚舉類型規定你只能用它裡面設定的成員,所以,只有一個成員的時候,就是單例了。

枚舉實現關鍵代碼
public enum SingleInstance{/*提供了一個可以訪問的枚舉成員*///singleInstance;//預設是不帶參的建構函式singleInstance(2);//使用帶參的建構函式private SingleInstance(){System.out.println("default constructor");};//建構函式private SingleInstance(int i){System.out.println("param constructor"+"..."+i);};//帶參的建構函式public void method(){System.out.println("我是方法");};//方法}}

 

----------  
android培訓、java培訓、期待與您交流! ----------

詳情請查看:http://edu.csdn.net/heima/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.