确保单个类实例的正确方法是什么?
在java中我会创建这样的东西:
private static MyClass instance; public static MyClass getInstance() { if(instance != null) { return instance; } instance = new MyClass(); return instance; }
在ruby中获取相同function的适当方法是什么?
更新:我读过’包含Singleton’,但是当我尝试在Ruby 1.9上使用irb时,我得到了:
[vertis@raven:~/workspace/test]$ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin9.4.0] [vertis@raven:~/workspace/test]$ irb irb(main):001:0> class TestTest irb(main):002:1> include Singleton irb(main):003:1> end NameError: uninitialized constant TestTest::Singleton from (irb):2:in `' from (irb):1 from /usr/local/bin/irb:12:in `'
已经有了如何在Ruby中做到这一点的答案,但我先问你需要吗?
无需将Java模式复制到Ruby。 我从2005年开始做Ruby,从来没有需要一个单例类。
为什么需要一个实例开始? 为什么不能只定义类方法并在类上调用它们。
据我所知,你正在尝试像:
instance = Klass.new instance.foo .. then somewhere else instance = Klass.new # expecting this to return the same instance instance.bar
但你可以这样做:
Klass.foo ... in other place Klass.bar
因为thre只有一个Klass类,所以你的问题本身就解决了,而且输入的问题也少了:)
Ruby中的类只是类Class的实例,因此它们可以拥有实例可以拥有的所有内容。