1

私は正しい方法でアプリケーションを設計しようとしています、それはすべきです

  1. SQL Serverから請求書データを読み取ります(請求書の種類に応じて2つのクエリ:販売または購入)
  2. それを処理します(AcmeはSugarCorpよりも少ないフィールドを必要とし、異なるフォーマットである可能性があります)
  3. txtまたはcsvを出力します(将来変更される可能性があります)

ファクトリパターンが役に立ったので、懸念に応じてUML図を作成しました。

UML図

それぞれがまたは(それらに固有)をInvoiceFactoryProvider生成できます。とメソッドを呼び出す必要があります。PInvoiceSInvoiceCreatePInvoice()CreateSInvoice()load()save()

load()SQLReaderクラスと組み合わせて、各行をPInvoiceオブジェクトとして取得するにはどうすればよいですか?そしてsave()私のIDataWriterインターフェースで。いくつかの例/アドバイスを提供できますか?

編集:

Atulが提案したように、ブリッジパターンの例を確認した後、それを使用してこの問題のクラス図を作成しました。これは次のようになります。

UML図-ブリッジパターン

InvoiceSQLクエリは異なる場合があり(アプリケーションは異なるシステムから請求書データをロードする場合があります-PollosInvoiceまたはStarInvoice)、それらの処理方法(異なる実装)。

この場合、抽象化Invoiceをその実装から切り離し、請求書を特定のソフトウェアにエクスポートします(AcmeExporterまたはSigmaExporter)。AcmeExporterまたSigmaExport、InvoiceのDataTableから取得したトランザクションの日付、支払い方法、請求書の種類などの仕様に従ってフィールドを設定します。ExportInvoice()必要なデータを返しDataTableます。InvoiceExporterまた、エンコーディングとファイル形式に2つのインターフェイスを使用しています。

あなたはそれについてどう思いますか?どのような欠陥/利点がありますか?

4

1 に答える 1

1

現在、製品 (請求書) の作成に Abstract Factory デザイン パターンを使用しているようです。ただし、注意すべき点は、読み込みと保存の方法が製品 (請求書) 内にあるため、常にブリッジ デザイン パターンを使用する方がよいということです。製品は、Reader と Writer の実装を使用して、レコードをロードおよび保存します。

注: このデザイン パターンでも AbstractFactory を使用できます。

以下のようになります...(単なるアナロジー)

ここに画像の説明を入力

于 2012-11-30T14:17:41.123 に答える