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

「分析による麻痺」と呼ばれるものに陥らないように注意することをお勧めします。パターンは、必要なことを実行するのが難しくなるところまで、役に立ちます。Wayne's World の言葉を借りれば、「I say hurl!」です。- またはより具体的には、オブジェクトの配列を YAML に投げつけて、出力を取得します。悪い言い方をすれば、「コードが吐き出して出力が得られれば、あなたはゴールデンです。しかし、パターンが何も得られない場合、それは決して意図されたものではありませんでした」.

ルックパターンは優れたアイデアの 1 つです。ルック パターンは、しばしば不適切に処理される一般的な状況を処理する方法についての実用的なガイダンスを提供します。コードの改善に役立ちます。それらは、コードを (あえて言いますか?) 美しいものにするのに役立ちます。でも、袖をまくり上げて、鼻を押さえて、仕事を終わらせるために必要なことをしなければならない時があります。その上、「やるだけ」なら、「もっとうまくやる」方法についての洞察が得られるかもしれません。

パーティー...

于 2010-10-15T11:38:42.660 に答える