我有一个构建一些数据和生成器对象的类。方法生成将执行委托给生成器对象。初始化生成所需的生成器和数据的最佳方法是什么。我看到两种选择:
在读者中初始化数据:
class SomeClass
def generate
generators.each(&:generate)
end
def generators
@generators ||= some_data.map do |data|
generator_class.new(data)
end
end
def some_data
@some_data ||= # initialize some not trival data
end
def generator_class
@generator_class ||= # finding generator class
end
end
或在generate方法中加载所有内容:
class SomeClass
def generate
generator_class = find_generator_class
some_data = initialize_some_data
generators ||= some_data.map do |data|
generator_class.new(data)
end
generators.each(&:generate)
end
def initialize_some_data
end
def find_generator_class
end
end
哪一个看起来更好?也许有另一种方法可以做这样的事情?