Ruby Singleton,模块与类

时间:2016-06-08 03:02:29

标签: ruby

我希望在ruby vs class和vs module中得到不同的实现单例模式。我说的是仅使用类方法的单例并且没有实例。至于我,使用

是合乎逻辑的
module Foo
  def self.foo= other
    @@foo=other
  end
  def self.foo
    @@foo
  end
end

但我常常在其他代码中看到代码class Foo;....;end,我想了解原因?如果没有实例且没有子类Module更方便。或者我可能会错过什么?

问题是单例模式实现中模块和类之间的差异是什么?

2 个答案:

答案 0 :(得分:3)

在Ruby中获取对象的最简单方法是使用一个对象:

class << Foo = Object.new
  attr_accessor :foo
end

使用模块或类是过度杀伤,两者都具有您不需要的功能。

答案 1 :(得分:0)

单身人士是一些对象,其类确保它只被实例化一次,并且所有客户端共享同一个实例。

Ruby的Singleton模块有助于以方便的方式实现这一目标。