<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 單例設計模式示例 > 原文: [https://javatutorial.net/java-singleton-design-pattern-example](https://javatutorial.net/java-singleton-design-pattern-example) 眾所周知,設計模式是為解決特定問題而創建的。單例解決了僅創建一個類的一個對象的問題。 單例設計模式是最流行的設計模式之一,它限制任何類只能有一個對象。 并在需要時使用該對象。 在某些情況下,我們只需要一個類的對象,例如對于數據庫連接,我們只需要一個對象來處理與查詢相關的每個數據庫,而不是每次都創建新對象。 我們僅創建一個數據庫連接對象并為其分配全局訪問權限,因此可以在任何地方訪問它。 ## 立即初始化的單例設計模式 顧名思義,**立即初始化**意味著在實際需要一個類的實例之前就已經創建了該實例。 通常,它是在系統啟動時完成的。 在熱切的初始化單例模式中,無論是否有其他類實際請求其實例,都將創建單例實例。 這種方法效果很好,但是有一個缺點。 不論是否在運行時都需要創建實例。 如果此實例不是大對象,并且您可以在不使用它的情況下生存下去,那么這是最好的方法。 ## 具有延遲初始化的單例設計模式 正如我們非常了解**延遲初始化**一樣,它僅遵循延遲人的邏輯,他從來不做任何事情,直到它迫切需要時為止,這與延遲初始化相同。 類的對象僅在需要時才創建,而不像上面那樣。 因此,在單例對象中,僅在第一次需要創建對象時才創建一次。 ## 使用單例設計模式的好處 **節省內存**:很明顯,每當我們創建任何類的對象時,它都會占用內存空間,因此創建許多對象意味著會占用更多內存空間。 由于單例類可能只有一個對象,因此可以節省內存。 **靈活性**:由于實例化過程是由類控制的,因此,類具有更改實例化過程的靈活性。 ## 此設計模式的工作方式 單例模式具有私有構造函數,因為我們知道私有只能訪問其類。 因此,它限制了在類之外創建類的對象。 單例模式具有靜態成員,因為靜態成員僅在內存中獲得一次空間。 并且此成員包含單例類的實例。 最后,單例模式具有靜態工廠方法,該方法可以全局訪問僅單例對象。 它負責將對象返回給調用者,以便他們可以使用它。 ## 單例設計模式的現實生活場景 由于我們大家都對大學非常熟悉,其結構,幾乎每個人都上過大學。 在設計大學管理系統時,副校長班將是單身。 因為一所大學只有一名語音校長,所以副校長的角色不能超過一個。 將有員工班級,員工可以是老師,牡丹,實驗室助理等。 所有這些都可以具有多個對象,因為任何一所大學中都有許多老師,牡丹,實驗室助手。 但是只有一位副總裁,因此通過使用單例模式,我們可以對其進行限制。 ## 單例模式圖 ![Above Diagram shows and explains implementation of the singleton pattern](https://img.kancloud.cn/be/72/be72ab8307e072e53345bd5eb6dfaa88_335x385.jpg) 上圖顯示并說明了單例模式的實現 ## 立即初始化的單例設計模式示例 ```java public class EagerSingleton { // private static member of class which holds the object of the class. private static EagerSingleton instance = new EagerSingleton (); ????// private constructor ????private EagerSingleton () { ????} //public method which is responsible making the global access of object ????public static EagerSingleton get Instance () { ????????return instance; ????} } ``` ## 延遲初始化的單例設計模式示例 ```java public class Lazy Singleton { // private static member which will hold the object when initialized private static Lazy Singleton instance = null; ????// private constructor ????private LazySingleton () { ????} // While any request comes it checks when object is created already or else it creates // return the object ????public static LazySingleton getInstance () { ????????if (instance == null) { ????????????synchronized (LazySingleton.Class) { ????????????????// Double check ????????????????if (instance == null) { ????????????????????instance = new LazySingleton (); ????????????????} ????????????} ????????} ????????return instance; ????} } ```
                  <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>

                              哎呀哎呀视频在线观看