1. 軟件設計模式概述html
2. GoF 的 23 種設計模式的分類和功能設計模式
3. UML中的類圖及類圖之間的關係安全
4. 開閉原則——面向對象設計原則ide
5. 里氏替換原則——面向對象設計原則性能
6. 依賴倒置原則——面向對象設計原則spa
7. 單一職責原則——面向對象設計原則.net
8. 接口隔離原則——面向對象設計原則線程
9. 迪米特法則——面向對象設計原則設計
10. 合成複用原則——面向對象設計原則代理
11. 建立型模式的特色和分類
12. 單例模式(單例設計模式)詳解
(1)餓漢式
①聲明靜態私有類變量,且當即實例化,保證明例化一次
②私有構造,防止外部實例化(經過反射是能夠實例化的,不考慮此種狀況)
③提供public的getInstance()方法供外部獲取單例實例
好處:線程安全;獲取實例速度快 缺點:類加載即初始化實例,內存浪費
public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton() { } public static Singleton getInstance() { return singleton; } }
(2)懶漢式
延遲加載。
優勢:在獲取實例的方法中,進行實例的初始化,節省系統資源
缺點:①若是獲取實例時,初始化工做較多,加載速度會變慢,影響系統系能
②每次獲取實例都要進行非空檢查,系統開銷大
③非線程安全,當多個線程同時訪問getInstance()時,可能會產生多個實例
public class Singleton { private static Singleton singleton = null; private Singleton() { } public static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } }
線程安全
1)同步鎖
優勢:線程安全,缺點:每次獲取實例都要加鎖,耗費資源,其實只要實例已經生成,之後獲取就不須要再鎖了
public synchronized static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; }
2)雙重檢查鎖
優勢:線程安全,進行雙重檢查,保證只在實例未初始化前進行同步,效率高 缺點:仍是實例非空判斷,耗費必定資源
public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; }
3)靜態內部類
優勢:既避免了同步帶來的性能損耗,又可以延遲加載
public class Singleton { private Singleton() { } private static class SingletonHolder { private static final Singleton singleton = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.singleton; } }
(3)枚舉
自然線程安全,可防止反射生成實例。
public enum Singleton { INSTANCE; public void init() { System.out.println("資源初始化。。。"); } }
13. 原型模式(原型設計模式)詳解
14. 工廠方法模式(詳解版)
15. 抽象工廠模式(詳解版)
18. 代理模式(代理設計模式)詳解
20. 橋接模式(Bridge模式)詳解
21. 裝飾模式(裝飾設計模式)詳解
22. 外觀模式(Facade模式)詳解
23. 享元模式(詳解版)
24. 組合模式(詳解版)
27. 策略模式(策略設計模式)詳解
28. 命令模式(詳解版)
29. 責任鏈模式(職責鏈模式)詳解
30. 狀態模式(詳解版)
32. 中介者模式(詳解版)
33. 迭代器模式(詳解版)
35. 備忘錄模式(詳解版)
36. 解釋器模式(詳解版)
37. UMLet的使用與類圖的設計
38. 建立型模式應用實驗
39. 結構型模式應用實驗
40. 行爲型模式應用實驗