亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
桃园市| 白城市| 武鸣县| 甘肃省| 大厂| 类乌齐县| 开江县| 绥中县| 盐池县| 清丰县| 房产| 滨海县| 瓮安县| 林甸县| 上思县| 财经| 林口县| 广水市| 内江市| 敦煌市| 苏尼特右旗| 湾仔区| 扎鲁特旗| 黑龙江省| 海安县| 阿巴嘎旗| 海兴县| 镇坪县| 黄龙县| 项城市| 宁乡县| 巩义市| 漠河县| 昭平县| 桦南县| 吴旗县| 项城市| 乃东县| 扬州市| 巴南区| 青河县|