<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 1、設計模式概述 軟件設計模式`Design pattern`,又稱設計模式,是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。 它不是語法規定,而是一套用來提高代碼可復用性、可維護性、可讀性、穩健性以及安全性的解決方案。 1995 年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可復用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟件設計模式領域的里程碑,人稱「GoF設計模式」。 | 創建型模式 | 結構型模式 | 行為型模式 | | :-: | :-: | :-: | | 工廠方法模式 | 橋接模式 | 備忘錄模式 | | 建造者模式 | 代理模式 | 解釋器模式 | | 抽象工廠模式 | 享元模式 | 命令模式 | | 原型模式 | 外觀模式 | 觀察者模式 | | 單例模式 | 裝飾器模式 | 策略模式 | | | 組合模式 | 狀態模式 | | | 適配器模式 | 模版方法模式 | | | | 訪問者模式 | | | | 迭代子模式 | | | | 責任鏈模式 | | | | 中介者模式 | ## 2、單例設計模式 單例`Singleton`模式的定義:指一個類只有一個實例,且該類能自行創建這個實例的一種模式。 ### 2.1 單例模式設計要點 1、單例類只有一個實例對象; 2、該單例對象必須由單例類自行創建; 3、單例類對外提供一個訪問該單例的全局訪問點; ### 2.2 單例模式代碼實現 1、只提供私有的構造方法 2、含有一個該類的靜態私有對象 3、提供一個靜態的公有的用于創建、獲取靜態私有對象 ## 3、餓漢模式 ``` /** * 餓漢模式:創建對象實例的時候直接初始化 */ public class HungrySingleton { // 1. 創建類中私有構造 public HungrySingleton() {} // 2. 創建該類型的私有靜態實例 private static final HungrySingleton instance = new HungrySingleton(); // 3. 創建公有靜態方法返回靜態實例對象 public static HungrySingleton getInstance() { return instance; } } ``` 【編程】某公司研發星球維護系統,請使用餓漢單例模式的實現思想,設計編寫地球類。程序運行參考效果圖如下: ``` 第一個地球創建中... 地球誕生 第二個地球創建中... 第三個地球創建中... 問:三個地球是同一個么? model.Earth@15db9742 model.Earth@15db9742 model.Earth@15db9742 ``` ``` public class Test { public static void main(String[] args) { System.out.println("第一個地球創建中..."); System.out.println("第二個地球創建中..."); System.out.println("第三個地球創建中..."); System.out.println("問:三個地球是同一個么?"); } } public class Earth { // 定義私有構造方法,并在構造方法中打印輸出"地球誕生" // 定義私有靜態類對象并完成實例化 // 定義公有靜態方法返回類內的私有靜態對象 } ``` ## 4、懶漢模式 ``` /** * 懶漢模式:類內實例對象創建時并不直接初始化,直到第一次調用get方法,才完成初始化 */ public class LazySingleton { // 1. 創建類中私有構造 private LazySingleton() {} // 2. 創建該類型的私有靜態實例 private static LazySingleton instance = null; // 3. 創建公有靜態方法返回靜態實例對象 public static LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } } ``` 【編程】請使用懶漢式單例模式的實現思想,設計編寫皇帝類。程序運行參考效果如下: ``` 創建1號皇帝對象 創建2號皇帝對象 創建3號皇帝對象 三個皇帝對象依次是: model.Emperor@15db9742 model.Emperor@15db9742 model.Emperor@15db9742 ``` ``` public class Test { public static void main(String[] args) { System.out.println("創建1號皇帝對象"); System.out.println("創建2號皇帝對象"); System.out.println("創建3號皇帝對象"); System.out.println("三個皇帝對象依次是:"); } } public class Emperor { // 定義私有構造方法 // 定義私有靜態類對象 // 定義公有靜態方法返回類內的私有靜態對象 } ``` 【選擇】下列關于懶漢式和餓漢式的說法錯誤的是()(選擇兩項) ``` A 餓漢式在第一次使用時進行實例化 B 懶漢式在類加載時就創建實例 C 餓漢式的線程是安全的 D 懶漢式存在線程風險 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看