正在计划使用工厂方法来获取ruby类的单例实例,但我不确定它是否将使用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可能在该计划的整个生命周期中,都有一个连续上升的计数器。
但是,我不确定什么可能持有对类的实例变量@@实例的引用,所以它会得到垃圾回收?
因为你定义类Foo,根据定义它不能是单件;相反,当类未定义时,Singleton是默认值。你的类和实例变量是在Foo类中定义的,而self将保存那些值(类变量类和对象变量) – aug2uag 2013-03-10 06:53:18
@ aug2uag你似乎很困惑。 OP询问一个单例实例,这意味着一个典型的单例模式实现。也许你应该看看[Singleton Pattern](http://en.wikipedia.org/wiki/Singleton_pattern)和Ruby的[Singleton Module](http://www.ruby-doc.org/stdlib-1.9)的定义0.3/libdoc /单/的RDoc/Singleton.html)。操作系统并没有问红宝石“单身”(aka eigen-或meta-)类。 – dbenhur 2013-03-10 18:02:39
um“在软件工程中,单例模式是一种设计模式,它将类的实例化限制为一个对象。” 这是从你提供的链接,正是我所处理的。有趣的是,我去年开始编程......看起来你是一个迷茫的儿子 – aug2uag 2013-03-10 19:34:39