私は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 %>
IはFooFactory
でprint
メソッドが返すべきことを期待false
の後が初めてインスタンス化されました。しかし、pages/home
ビューをリフレッシュするたびに、コンソールは印刷を続ける。true
普通のRubyを使って同様のコードを実行しようとしましたか(つまり、不要なものは何も含んでいない) –