我希望在ruby vs class和vs module中得到不同的实现单例模式。我说的是仅使用类方法的单例并且没有实例。至于我,使用
是合乎逻辑的module Foo
def self.foo= other
@@foo=other
end
def self.foo
@@foo
end
end
但我常常在其他代码中看到代码class Foo;....;end
,我想了解原因?如果没有实例且没有子类Module
更方便。或者我可能会错过什么?
问题是单例模式实现中模块和类之间的差异是什么?
答案 0 :(得分:3)
在Ruby中获取对象的最简单方法是使用一个对象:
class << Foo = Object.new
attr_accessor :foo
end
使用模块或类是过度杀伤,两者都具有您不需要的功能。
答案 1 :(得分:0)
单身人士是一些对象,其类确保它只被实例化一次,并且所有客户端共享同一个实例。
Ruby的Singleton
模块有助于以方便的方式实现这一目标。
Singleton
模块而不是重新发明轮子。