以下の内容はhttps://kikeda1104.hatenablog.com/entry/2016/10/05/001441より取得しました。


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から呼び出しています。"

参考

const_get (Module) - Rubyリファレンス

constantize (ActiveSupport::Inflector) - APIdock




以上の内容はhttps://kikeda1104.hatenablog.com/entry/2016/10/05/001441より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14