在 Ruby 中,您可以使用模塊來實現單例模式。以下是一個簡單的示例:
# 創建一個名為 Singleton 的模塊
module Singleton
# 使用一個類變量(@instance)來存儲唯一的實例
@@instance = nil
# 初始化方法,用于創建唯一實例
def self.instance
# 如果 @instance 為 nil,則創建一個新實例并將其賦值給 @instance
unless @@instance
@@instance = self.new
end
# 返回唯一的實例
@@instance
end
# 定義一個實例方法,用于返回當前實例
def self.instance
@@instance
end
end
# 使用 Singleton 模塊創建一個名為 MyClass 的類
class MyClass
include Singleton
# 定義一個實例變量
attr_accessor :name
# 初始化方法,用于設置實例變量
def initialize(name)
@name = name
end
end
# 創建 MyClass 的唯一實例
my_instance1 = MyClass.instance
my_instance1.name = "Alice"
# 創建 MyClass 的另一個實例
my_instance2 = MyClass.instance
my_instance2.name = "Bob"
# 輸出兩個實例的名稱,它們應該是相同的,因為它們共享同一個實例
puts my_instance1.name # 輸出 "Alice"
puts my_instance2.name # 輸出 "Alice"
在這個示例中,我們創建了一個名為 Singleton
的模塊,它包含一個類變量 @instance
和兩個實例方法 instance
。instance
方法用于創建唯一實例(如果尚未創建),并返回該實例。我們使用這個模塊創建了一個名為 MyClass
的類,并包含了 Singleton
模塊。這意味著 MyClass
只有一個實例,可以通過調用 MyClass.instance
來獲取。