我有一些像这样的课程:
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
and实现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
这种实现似乎不是很有可扩展性。