我现在在我的项目中有一个 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 格式。有任何想法吗?