2016-06-08 65 views
0

我想在ruby vs class和vs module中获得实现singleton模式的区别。我只是用类方法讨论singleton,没有实例。对于我来说,这是合乎逻辑的使用Ruby Singleton,模块vs类

module Foo 
    def self.foo= other 
    @@foo=other 
    end 
    def self.foo 
    @@foo 
    end 
end 

但很多时候我在别人的代码class Foo;....;end看,我想知道为什么吗?如果没有实例,并没有子类Module更方便。或者我可能会想念什么?

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

+0

实际上,有很多方法可以在Ruby中实现Singletons。我发现下面的文章颇有启发:https://www.practicingruby.com/articles/ruby-and-the-singleton-pattern-dont-get-along – user1934428

回答

1

获得在Ruby中的对象,最简单的方法是使用,那么,一个对象:

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

使用一个模块或类是矫枉过正,都有你不需要的功能。

+0

这是一个很棒的语法思想!谢谢! –

0

单身人士的对象的类确保它只实例化一次,同一个实例被所有客户共享。

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

+0

我知道什么是单身人士。我没有问stdlib模块这样的单身人士,我正在问ruby中的单身人士编程模式。与使用模块,而不是班级。是的,模块不能被实例化,但它可以存储自己的模块变量,并且用于实现单例模式 –