編程中為什么要用到單例模式?


編程開發中為什么要用到單例模式?

單例模式的存在,一則,解決多線程並發訪問的問題。二則節約系統內存,提交系統運行的效率,提高系統性能。

單例模式的代碼:

 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 }
View Code

從代碼上來分析,單例模式,首先向外提供了一個可被訪問的實例化的對象,如果沒有此對象時,該printer類創建一個。如果遇到多線程並發訪問,加上關鍵字Synchronized,上鎖讓沒有持有該對象的類處於等待狀態。當前持有該printer的線程任務結束之后,處於等待中的線程才能逐個去持有該實例,去操作其方法。這樣的一個過程 在編程中被稱為單例模式。
如果在系統中不使用單例模式的話,在碰到多線程訪問的時候,printer就會給要請求的類,分別在內存中new出一個printer對象,讓這些請求的類去做print方法。這樣大量占有內存,就會導致系統運行變慢,像電腦的CPU一樣,占有量極高,電腦卡死不動的感覺。因為系統的硬件設施需求變動量小,所以只能想出一個節約成本 的方法就是,單例模式,讓多線程處於等待的狀態,一個 一個的去解決,這樣,即節約內存,提交了運行的成本。也就是單例存在的意義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM