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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 33.單例模式 想象一下,如果你在一個房子里開派對,并且預計要有 20 位客人,那么每位客人都必須進入你的房間,因此每位客人都需要一扇門,因此你開始砸墻并開始為 20 扇門騰出空間。 聽起來不瘋狂嗎? 你不認為只有一扇門可以達到這個目的嗎? 假設你想在 Ruby 程序中訪問數據庫。 你可以編寫一個類來連接它并返??回結果。 假設你的程序正在與數據庫同時建立 10 個連接,那么你認為復制數據庫用戶名,密碼和查詢程序的邏輯在你計算機 RAM 的 10 個位置中存在嗎? 還是你認為將它放在一個地方并可以被所有人使用是有效的? 歡迎使用 Singleton 模式,無論如何,即使創建了 100 萬次,Singleton 對象也可以將其存儲在計算機 RAM 中的一個位置,從而節省了計算機空間。 讓我們看一個非常簡單的例子。 下面我們有一個名為 [multiton.rb](code/design_patterns/multiton.rb) 的程序。 輸入并執行。 ```rb # multiton.rb class Multiton end puts Multiton.new.object_id puts Multiton.new.object_id ``` 輸出量 ```rb 47002601799540 47002601799360 ``` 在上面的程序中,我們正在創建類`Multiton`的兩個實例,并在查詢其`object_id`。 如果這兩個實例在 RAM 中占據相同的位置,那么我們本來會同時擁有相同的對象 ID,但是我們看到的是不同的,因此它們在 RAM 中占據了兩個不同的空間。 看一下程序 [singleton_example.rb](code/design_patterns/singleton_example.rb) 。 輸入并執行。 ```rb # singleton_example.rb require 'singleton' class SingletonExample include Singleton end puts SingletonExample.instance.object_id puts SingletonExample.instance.object_id ``` Output ```rb 47257803517040 47257803517040 ``` 在上面的程序中,我們有一個名為`SingletonExample`的類,在其中我們稱為`include Singleton`的語句,這使該類成為 Singleton。 (為此請注意,在程序的開始我們編寫了`require 'singleton'`,是的,Ruby 已經在單例庫中得到了烘烤。)也就是說,即使它多次初始化,它也不會在計算機 RAM 中創建其自身的副本。 實際上,我們不能在此類上調用任何`new`方法。 為了證明它僅占用 RAM 中的一個插槽,我們將其調用兩次并使用此語句`puts SingletonExample.instance.object_id`打印對象 ID,這里我們創建了 singleton 類的兩個實例,并且它返回相同的對象 ID,證明它不會復制自身 在 RAM 中的各個位置,因此是一個單例。
                  <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>

                              哎呀哎呀视频在线观看