1

xls ソース (ole db) からデータをロードし、出力ファイルの仕様に従ってフォーマットし、処理されたフィールドをマージして、csv に保存するなどの作業を完了する必要があります。

特定のタイプでなければならないデータの複数のフィールドを処理する方法は? 特定の方法でフォーマットされている - など

この問題のクラス構造を抽象化するのに苦労しています。

どのデザインパターンが私に最も適していますか?

4

1 に答える 1

1

最初はデザインパターンを考えることはしませんが、少なくとも最初は問題をより小さな部分に分解します。

さて、あなたの説明は、実際の処理について実際に詳しく説明するには少し曖昧かもしれませんが、そこから少なくとも 3 つの部分を特定できます。

  • データリーダー
  • データ処理者
  • データライター

ファイルやストリームを処理する方法と同様に、リーダーとライターの両方を考えたいと思うかもしれません。たとえば、リーダーには次のようなものがあります。

  • Open
  • Read(1項目だけ読んでください)
  • Close

ライターについても同じですが、Write.

との 2 つのインターフェイスを抽象化し、IDataReaderインターフェイスを介してのみ、リーダーとライターの両方と対話しますIDataWriterIDataProcessor

これらのコントラクトを配置することは、プロセッサがそれぞれを解決するための内部的な方法について心配する必要なく、などのリーダーXLSReader : IDataReaderとライターの 1 つの実装を持つことができることを意味します。CSVWriter : IDataWriter

これらの抽象化を使用すると、(他の部分をモックすることによって) 各部分を分離して、クリーンで独立した単体テストを作成できます。これにより、開発中のすべてのステップをテストできます。

また、これらのタイプのコントラクトでは、1 つの大きなデータ (大きなDataTableものなど) ではなく、小さなパケットでデータを処理したり、進行状況を測定したりできます。

現在、実際の要件に応じて、リーダーが提供するデータ型のスキーマまたは定義を使用できます。これは、入力データを変更して出力を構築する出力、フォーマッター、およびトランスフォーマーと同じです。

于 2012-11-20T01:25:28.477 に答える