在何处初始化执行方法所需的数据

时间:2016-10-16 17:43:47

标签: ruby oop design-patterns

我有一个构建一些数据和生成器对象的类。方法生成将执行委托给生成器对象。初始化生成所需的生成器和数据的最佳方法是什么。我看到两种选择:

在读者中初始化数据:

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

哪一个看起来更好?也许有另一种方法可以做这样的事情?

0 个答案:

没有答案