編程開發中為什么要用到單例模式?
單例模式的存在,一則,解決多線程並發訪問的問題。二則節約系統內存,提交系統運行的效率,提高系統性能。
單例模式的代碼:

1 public class Printer { 2 private static Printer printer =null;//創建一個私有的全局變量 3 /* 4 * 如果有多線程並發訪問時,上鎖,讓其排隊等候,一次只能一人用。 5 */ 6 public static synchronized Printer getPrinter(){ 7 if(printer==null){//如果為空,創建本實例 8 printer = new Printer(); 9 } 10 return printer; 11 } 12 /* 13 * 構造私有化,保證在系統的使用中,只有一個實例 14 */ 15 private Printer(){ 16 17 } 18 }
從代碼上來分析,單例模式,首先向外提供了一個可被訪問的實例化的對象,如果沒有此對象時,該printer類創建一個。如果遇到多線程並發訪問,加上關鍵字Synchronized,上鎖讓沒有持有該對象的類處於等待狀態。當前持有該printer的線程任務結束之后,處於等待中的線程才能逐個去持有該實例,去操作其方法。這樣的一個過程 在編程中被稱為單例模式。
如果在系統中不使用單例模式的話,在碰到多線程訪問的時候,printer就會給要請求的類,分別在內存中new出一個printer對象,讓這些請求的類去做print方法。這樣大量占有內存,就會導致系統運行變慢,像電腦的CPU一樣,占有量極高,電腦卡死不動的感覺。因為系統的硬件設施需求變動量小,所以只能想出一個節約成本 的方法就是,單例模式,讓多線程處於等待的狀態,一個 一個的去解決,這樣,即節約內存,提交了運行的成本。也就是單例存在的意義。