私は正しい方法でアプリケーションを設計しようとしています、それはすべきです
- SQL Serverから請求書データを読み取ります(請求書の種類に応じて2つのクエリ:販売または購入)
- それを処理します(AcmeはSugarCorpよりも少ないフィールドを必要とし、異なるフォーマットである可能性があります)
- txtまたはcsvを出力します(将来変更される可能性があります)
ファクトリパターンが役に立ったので、懸念に応じてUML図を作成しました。

それぞれがまたは(それらに固有)をInvoiceFactoryProvider生成できます。とメソッドを呼び出す必要があります。PInvoiceSInvoiceCreatePInvoice()CreateSInvoice()load()save()
load()SQLReaderクラスと組み合わせて、各行をPInvoiceオブジェクトとして取得するにはどうすればよいですか?そしてsave()私のIDataWriterインターフェースで。いくつかの例/アドバイスを提供できますか?
編集:
Atulが提案したように、ブリッジパターンの例を確認した後、それを使用してこの問題のクラス図を作成しました。これは次のようになります。

InvoiceSQLクエリは異なる場合があり(アプリケーションは異なるシステムから請求書データをロードする場合があります-PollosInvoiceまたはStarInvoice)、それらの処理方法(異なる実装)。
この場合、抽象化Invoiceをその実装から切り離し、請求書を特定のソフトウェアにエクスポートします(AcmeExporterまたはSigmaExporter)。AcmeExporterまたSigmaExport、InvoiceのDataTableから取得したトランザクションの日付、支払い方法、請求書の種類などの仕様に従ってフィールドを設定します。ExportInvoice()必要なデータを返しDataTableます。InvoiceExporterまた、エンコーディングとファイル形式に2つのインターフェイスを使用しています。
あなたはそれについてどう思いますか?どのような欠陥/利点がありますか?
