阅读量:5
在 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 来获取。
以上就是关于“Ruby单例模式如何实现”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm