中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Ruby單例模式如何實現懶加載

小樊
83
2024-11-01 21:17:06
欄目: 編程語言

在Ruby中,你可以使用模塊來實現單例模式的懶加載。這是一個示例:

module Singleton
  def self.included(base)
    base.class_eval do
      @instance = nil

      def self.instance
        return @instance if @instance

        @instance = new
        yield(@instance) if block_given?
        @instance
      end
    end
  end
end

class MyClass
  include Singleton

  def initialize(name)
    @name = name
  end

  def say_hello
    puts "Hello, my name is #{@name}."
  end
end

# 使用單例模式懶加載MyClass
my_instance = MyClass.instance { |obj| obj.name = "John" }
my_instance.say_hello # 輸出 "Hello, my name is John."

在這個示例中,我們創建了一個名為Singleton的模塊,它包含一個included方法。當一個類包含了這個模塊時,included方法會被調用。在這個方法中,我們定義了一個instance類方法,它會返回類的唯一實例。如果實例尚未創建,instance方法會創建一個新的實例,否則返回已創建的實例。

MyClass類中,我們包含了Singleton模塊,并定義了一個initialize方法。我們還定義了一個say_hello方法,用于輸出實例的名字。

要使用單例模式懶加載MyClass,我們可以調用MyClass.instance,并在塊中設置實例的屬性。在這個例子中,我們將實例的名字設置為"John"。然后我們可以調用say_hello方法,輸出實例的名字。

0
凭祥市| 汝州市| 光泽县| 旺苍县| 扶绥县| 黎城县| 慈利县| 礼泉县| 拜泉县| 巨野县| 广元市| 志丹县| 门源| 平湖市| 若尔盖县| 延边| 商都县| 松江区| 肥东县| 龙口市| 进贤县| 凤阳县| 喀喇| 丹寨县| 金堂县| 开封县| 宝应县| 长春市| 金平| 建阳市| 包头市| 革吉县| 安阳县| 叶城县| 安溪县| 永州市| 河间市| 德兴市| 金堂县| 永胜县| 黔西县|