面接官が面接を行います。しかし、一人でマーケターやエンジニアなどすべて職種の面接官を一人で行うことは出来ません。エンジニアの面接はエンジニアにお願いし、マーケターの面接はマーケターにしてもらいましょう。
ここでのfactoryはHiringManagerです。このクラスのサブクラスであるDevelopmentManagerとMarketingManagerでmakeInterviewerというメソッドを用意しクラス生成を行なっている。このメソッドのことをファクトリーメソッドという。
テンプレートメソッドパターンをどのオブジェクトを生成するかに使ったパターンです。factory_methodパターンはtemplate_methodパターンの一種と言える。
class Interviewer def askQuestion end end class Developer < Interviewer def askQuestion puts "開発について" end end class CommunityExecutive < Interviewer def askQuestion puts "コミュニティについて" end end class HiringManager def makeInterviewer end def takeInterview interviewer = makeInterviewer interviewer.askQuestion end end class DevelopmentManager < HiringManager def makeInterviewer Developer.new end end class MarketingManager < HiringManager def makeInterviewer CommunityExecutive.new end end marketer = MarketingManager.new developer = DevelopmentManager.new marketer.takeInterview developer.takeInterview