在Ruby中,單例模式是一種設(shè)計(jì)模式,它確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn)。這在需要控制資源使用、配置管理或維護(hù)全局狀態(tài)時(shí)非常有用。以下是Ruby中實(shí)現(xiàn)單例模式的一些方法:
class Singleton
@@instance = nil
def self.instance
return @@instance if @@instance
@@instance = new
end
def initialize
# 初始化代碼
end
end
# 使用單例
singleton = Singleton.instance
singleton.do_something
module SingletonModule
def self.included(base)
base.class_eval do
@instance = nil
def self.instance
@instance ||= new
end
end
end
end
class MyClass
include SingletonModule
def do_something
# 方法實(shí)現(xiàn)
end
end
# 使用單例
my_instance = MyClass.instance
my_instance.do_something
require_relative 'singleton'
class Singleton
def self.instance
@instance ||= new
end
def self.new(*args, &block)
@instance ||= super.tap do |instance|
define_method(:new) { instance }
end
end
def initialize
# 初始化代碼
end
end
# 使用單例
singleton = Singleton.instance
singleton.do_something
require 'thread'
class Singleton
def self.instance
Thread.current[:singleton_instance] ||= new
end
def initialize
# 初始化代碼
end
end
# 使用單例
singleton = Singleton.instance
singleton.do_something
class Singleton
class << self
attr_reader :instance
def instance
@instance ||= new
end
def new(*args, &block)
@instance ||= super.tap do |instance|
define_method(:new) { instance }
end
end
end
def initialize
# 初始化代碼
end
end
# 使用單例
singleton = Singleton.instance
singleton.do_something
這些方法都可以實(shí)現(xiàn)單例模式,你可以根據(jù)具體需求和Ruby版本選擇合適的方法。