2016-06-08 85 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中的單身人士編程模式。與使用模塊,而不是班級。是的,模塊不能被實例化,但它可以存儲自己的模塊變量,並且用於實現單例模式 –