担当、主任、部長、取締役の4つの役職をtype別に生成する。
class ShainFactory
def create(type, kihonkyu)
shain = nil
if type == 'Tanto'
shain = Tanto.new(kihonkyu)
elsif type == 'Shunin'
shain = Shunin.new(kihonkyu)
elsif type == 'Bucho'
shain = Bucho.new(kihonkyu)
elsif type == 'Torishimariyaku'
shain = Torishimariyaku.new(kihonkyu)
end
shain
end
end
長すぎるのでevalを使ってスッキリさせる。evalは指定した文字列をRubyのプログラムコードとして実行し、その結果を返す。 typeの中身がTantoであればTanto.newを返す。
class ShainFactory
def create(type, kihonkyu)
eval "#{type}.new(kihonkyu)"
end
end
スッキリしました。