設計模式就是在大量的實踐中總結和理論之後優選的代碼結構、編程風格、以及解決問題的思考方式。 說白了設計模式就是在實際編程中逐漸總結出的解決問題的套路,類似於數學公式。 類的單例設計模式:在開發過程中有且只有一個實例化對象。 怎麼做到在整個系統運行過程中,這個類只被實例化一次?不論在哪只調用這一個實例 ...
設計模式就是在大量的實踐中總結和理論之後優選的代碼結構、編程風格、以及解決問題的思考方式。
說白了設計模式就是在實際編程中逐漸總結出的解決問題的套路,類似於數學公式。
類的單例設計模式:在開發過程中有且只有一個實例化對象。
怎麼做到在整個系統運行過程中,這個類只被實例化一次?不論在哪只調用這一個實例?
什麼情況下使用單例設計模式?
實例化對象的創建要消耗大量的時間和資源,例如構造方法中的代碼行太多。或者頻繁的new的新對象沒有必要。
//餓漢式:一開始就new一個對象出來
public class Singleton { //私有構造方法,調用這個類的人就不能直接使用new來創建對象 private Singleton(){ }
//私有的Singleton類型的類變數 private static Singleton INSTANCE = new Singleton();
//構建返回返回類變數的方法 public static Singleton getInstance(){ return INSTANCE; } }
//懶漢式:最開始,對象是null,直到有第一個人調用才new一個對象,之後所有的調用都用這個對象 public class Singleton { //先私有化構造方法,不能讓外邊直接new對象 private Singleton() { } //私有化一個對象 private static Singleton instance = null; //公共方法:判斷instance是否為null,為null就實例化,不是null就直接返回instance public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } //此版本的懶漢式存在安全問題
理解main方法的語法
由於java虛擬機需要調用main()方法,所以該方法的訪問許可權必須是public。又因為java虛擬機在執行main()方法時不必創建對象,所以該方法必須是static的。該方法接收一個String類型的數組參數,該數組保存執行java命令時傳遞給所有運行的類的參數。