私はこれらのようないくつかのクラスを持っています:
class Word
def initialize (file_name)
load_file(file_name)
end
def pick_first_word(score)
#get first word
end
private
def load_file(file_name)
#load the file
end
end
class MyClass < SomeOther
def initialize (file_name)
@word = Word.new(file_name)
end
def pick
@word.pick_first_word
end
#some other code
end
dosomething = MyClass.new("words.txt")
dosomethingelse = MyClass.new("movies.txt")
Word
そのため、ファイルを読み取り、最初の単語を選択するためのクラスがあります。それと同じように、別のクラス、たとえばMovies
、との独自の実装を持つload_file
クラスが必要pick_first_word
です。に送信するファイルの種類によってこれを制御したいMyClass
。
質問
送信するファイルの種類に基づいて正しいクラスを開始するようにinitialize
メソッドを変更する良い方法は何ですか。MyClass
ファイル名に対して if/else で実行できますが、あまりスケーラブルではないようです。
initialize
メソッドをこれに変更するよりも、これを行うためのより良い方法はありMyClass
ますか?
def initialize (file_name)
if (file_name == "word.txt")
@word = Word.new(file_name)
else
@word = Movie.new(file_name)
end
この実装はあまりスケーラブルではないようです。