單例設計模式懶漢式和惡漢式


一,單例設計模式懶漢式和惡漢式

懶漢式在類加載時不初始化,延遲加載。(配置文件)

餓漢式在類加載時初始化,加載慢,獲取對象快。

餓漢式是線程安全的,

懶漢式需要加synchronized,否則不安全。

二,餓漢式

 1 public class Singletonehan {
 2     private static  Singletonehan singleton=new Singletonehan();
 3     private Singletonehan() {
 4     }
 5 public static Singletonehan getInstance(){
 6         return singleton;
 7 }
 8 
 9     @Override
10     public String toString() {
11         return "Singletonehan{}";
12     }
13 }

測試

1 public class testehan {
2     public static void main(String[] args) {
3         Singletonehan singletonehan = Singletonehan.getInstance();
4         System.out.println(singletonehan);
5     }
6 }

三,懶漢式

 1 public class Singletonlanhan {
 2    // private static  Singletonlanhan singleton=new Singletonlanhan();
 3     private static  Singletonlanhan singleton=null;
 4 
 5     private Singletonlanhan() {
 6     }
 7 
 8     public static Singletonlanhan getInstance() {
 9         if (singleton == null) {
10             singleton = new Singletonlanhan();
11         }
12         return singleton;
13     }
14 
15     @Override
16     public String toString() {
17         return "Singletonlanhan{}";
18     }
19 }

測試

1 public class test {
2     public static void main(String[] args) {
3         Singletonlanhan singletonlanhan = Singletonlanhan.getInstance();
4         System.out.println(singletonlanhan);
5     }
6 }

結果

Singletonlanhan{}

Process finished with exit code 0

補充加synchronized后的懶漢

 1 public class Singletonlanhan {
 2    // private static  Singletonlanhan singleton=new Singletonlanhan();
 3     private static  Singletonlanhan singleton=null;
 4 
 5     private Singletonlanhan() {
 6     }
 7 
 8     public synchronized static Singletonlanhan getInstance() {
 9         if (singleton == null) {
10             singleton = new Singletonlanhan();
11         }
12         return singleton;
13     }
14 
15     @Override
16     public String toString() {
17         return "鎖Singletonlanhan{}";
18     }
19 }

結果

鎖Singletonlanhan{}

Process finished with exit code 0

 


免責聲明!

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



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