---------------------- asp.net+Unity開發、.Net培訓、期待與您交流! ----------------------
單例設計模式:解決的問題:保證一個類在內存中的對象唯一性。比如:多程序讀取一個配置文件時,建議配置文件封裝成對象。會方便操作其中數據,又要保證多個程序讀到的是同一個配置文件對象,就需要該配置文件對象在內存中是唯一的。
Runtime()方法就是單例設計模式進行設計的。
如何保證對象唯一性呢?思想:1,不讓其他程序創建該類對象。2,在本類中創建一個本類對象。3,對外提供方法,讓其他程序獲取這個對象。
步驟:1,因為創建對象都需要構造函數初始化,只要將本類中的構造函數私有化,其他程序就無法再創建該類對象;2,就在類中創建一個本類的對象;3,定義一個方法,返回該對象,讓其他程序可以通過方法就得到本類對象。(作用:可控)
代碼體現:1,私有化構造函數;2,創建私有并靜態的本類對象;3,定義公有并靜態的方法,返回該對象。
Class Single{ PRivate static final Single s=new Single(); private Single(){}; public static Single getInstance() { return s; }}懶漢式:Class Single{ Private static Single s=null; Private Single(){}; Public static synchronized Single getInstance() { If(s==null) S=new Single(); return s; }}加這個synchronized 會使效率變低,但是如果不加這個關鍵字,會導致無單例模式的效果。可以通過這種方式解決: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; }}原則:定義單例時,建議使用餓漢式。--------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 詳細請查看:www.itheima.com
新聞熱點
疑難解答