クラスが外部ライブラリをロードする必要があるとします。このライブラリはロードに時間がかかるため、一度だけロードする必要があります。これに対する 2 つの自然な解決策は、シングルトン パターンまたはモノステート パターンを使用することです。Ruby のこの特定のコンテキストで、これらのソリューションのいずれかに利点はありますか?
例えば:
# Using a Singleton class
require 'singleton'
class Parser
include Singleton
def initialize
@parser = load_external_library
end
def parse(sentence)
@parser.parse(sentence)
end
end
# Then calling using...
Parser.instance.parse(sentence)
対:
# Using a Monostate class
class Parser
def self.parse(sentence)
@@parser ||= load_external_library
@@parser.parse(sentence)
end
end
# Then calling using...
Parser.parse(sentence)
2 番目の構文はより簡潔なので、Ruby でシングルトンを使用する利点はありますか?