计划使用工厂方法来获取 ruby 类的单例实例,但我不确定它是否适用于 Ruby 垃圾收集。
例如,如果我有类似的东西:
class Foo
def self.getInstance
@@instance = Foo.new if @instance.nil?
return @@instance
end
def counter
@counter
end
def increment
@counter++
end
private
def initialize
@counter = 0
end
end
所以这在我熟悉的其他语言中的工作方式是 @instance 可以无限期地在垃圾收集中存活,因此可以依赖 Foo.getInstance.increment 在程序的整个生命周期内拥有一个连续递增的计数器。
但是,我不确定什么可能会保留对类的实例变量 @@instance 的引用,所以它会被垃圾收集吗?