91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
武邑县| 河西区| 丽江市| 尼木县| 元朗区| 金华市| 灵丘县| 衡水市| 宾川县| 南溪县| 监利县| 永泰县| 宁强县| 汝城县| 青岛市| 甘泉县| 启东市| 美姑县| 伊通| 泉州市| 松桃| 岳西县| 罗江县| 佛学| 大连市| 常宁市| 崇信县| 和平区| 北川| 综艺| 苗栗县| 新河县| 隆德县| 土默特右旗| 科尔| 雷波县| 乌鲁木齐县| 张家口市| 南和县| 文山县| 方正县|