儘管我已經將FooFactory類聲明爲「Singleton」,但它的類變量@@ foo每次都會被實例化。這是爲什麼?在Ruby中實現單例模式
主要單例類:
require 'singleton'
class FooFactory
include Singleton
@@foo = nil
def get_foo
print @@foo.nil?.to_s
@@foo ||= "I am a string"
return @@foo
end
end
控制器代碼:
class PagesController < ApplicationController
def home
@foo = FooFactory.instance.get_foo
end
end
視圖代碼:
<%= @foo %>
我期望在FooFactory
的print
方法應該返回false
在之後已經第一次實例化了。但每次刷新pages/home
視圖時,控制檯都會繼續打印true
。
您是否嘗試過使用普通Ruby運行類似的代碼(即沒有Rails,並且不包括任何你不需要的東西),並看到你得到了什麼? –