Rubyによるデザインパターンという本を借りたまま、持っているのですが、たまたま実務でFactory Methodパターンを利用するのに
良い機会が得られたので、本を思い出しながら設計/実装を進めました。周りを気にせず、実装に集中できるのは楽しいですね。
前提
Rails 5系
Ruby 2.3系
準備
class BaseService
def test_method
end
end
class UserService < BaseService
def test_method
puts "UserServiceから呼び出しています。"
end
end
class MemberService < BaseService
def test_method
puts "MemberServiceから呼び出しています。"
end
end
呼出側
class SelectClass
def initialize(option)
@service = "#{option.capitalize}Service".constantize.new # Rails
end
def service_call
@service.test_method
end
end
動作確認
SelectClass.new("user").test_method
-> puts "UserServiceから呼び出しています。"
SelectClass.new("member").test_method
-> puts "MemberServiceから呼び出しています。"