0

我现在在我的项目中有一个 Builder 模式的实例。目前,支持的输出格式是 CSV,但我现在想包含 YAML。容易,我想。我有所有支持代码来更改类型。

我发现自己有点复杂。使用 Builder 模式的目的是逐步构建输出文件。对我来说,这似乎与 YAML 直接矛盾 - 将所有对象放入一个数组并调用 YAML::dump()。

好消息是我确实有一组这些对象。它被传递给导演。这是 Director 的construct() 方法的一个片段。

  def construct(aDataAccessObjectCollection)
    @daos = aDataAccessObjectCollection
    result = ''

    @daos.each do |dao|
      @builder.build_food_name(dao.get_property('name'))
      @builder.build_calories(dao.get_property('calories'))
      @builder.build_keywords(dao.get_property('keywords'))

      result += (@builder.get_result + "\n")
      @builder.flush
    end

    File.open(@file_name, 'w') do |file|
      file.write(result)
    end
  end

我不确定如何同时适应 CSV 和 YAML 格式。有任何想法吗?

4

1 回答 1

1

我建议小心不要陷入过去所谓的“分析瘫痪”。模式很有用,直到它们使你需要做的事情变得更加困难。用韦恩的世界的话来说,“我说投掷!” - 或者更具体地说,将对象数组投掷到 YAML 并获取您的输出。套用一句不好的话,“如果你的代码喷出并且你得到了你的输出,你就是黄金。但如果模式没有让你得到任何东西,那么它永远不会成为”。

外观模式是伟大的想法之一——它们为如何处理通常处理不当的常见情况提供了实用指导。它们可以帮助改进代码。他们可以帮助使代码(我敢说吗?)美观。但是,你知道,有时候你必须卷起袖子,捂住鼻子,尽一切可能完成工作。此外,如果你“只是做它”,你可能会深入了解如何“做得更好”——同时你会得到一些有用的东西。

派对...

于 2010-10-15T11:38:42.660 回答