Factory Methodの利用(Ruby)
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から呼び出しています。"