确保单个类实例的正确方法是什么?

在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的实例,因此它们可以拥有实例可以拥有的所有内容。