确保类的单个实例的正确方法是啥? [复制]
Posted
技术标签:
【中文标题】确保类的单个实例的正确方法是啥? [复制]【英文标题】:What is the correct way of ensuring a single instance of a class? [duplicate]确保类的单个实例的正确方法是什么? [复制] 【发布时间】:2011-01-19 13:57:24 【问题描述】:在java中我会创建这样的东西:
private static MyClass instance;
public static MyClass getInstance()
if(instance != null)
return instance;
instance = new MyClass();
return instance;
在 ruby 中获得相同功能的适当方法是什么?
更新:我已经阅读了有关“包含 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 `<class:TestTest>'
from (irb):1
from /usr/local/bin/irb:12:in `<main>'
【问题讨论】:
发现我只需要一个 require 语句......尽管关于正确方法的讨论仍然存在(并且根本没有浪费对它的需求) 【参考方案1】:已经有如何在 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
而且由于只有一个类 Klass,因此您的问题已在本地解决,并且输入的内容也更少:)
Ruby 中的类只是 Class 类的实例,因此它们可以拥有实例可以拥有的一切。
【讨论】:
以上是关于确保类的单个实例的正确方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章