私は正しい方法でアプリケーションを設計しようとしています、それはすべきです
- SQL Serverから請求書データを読み取ります(請求書の種類に応じて2つのクエリ:販売または購入)
- それを処理します(AcmeはSugarCorpよりも少ないフィールドを必要とし、異なるフォーマットである可能性があります)
- txtまたはcsvを出力します(将来変更される可能性があります)
ファクトリパターンが役に立ったので、懸念に応じてUML図を作成しました。
それぞれがまたは(それらに固有)をInvoiceFactoryProvider
生成できます。とメソッドを呼び出す必要があります。PInvoice
SInvoice
CreatePInvoice()
CreateSInvoice()
load()
save()
load()
SQLReaderクラスと組み合わせて、各行をPInvoice
オブジェクトとして取得するにはどうすればよいですか?そしてsave()
私のIDataWriter
インターフェースで。いくつかの例/アドバイスを提供できますか?
編集:
Atulが提案したように、ブリッジパターンの例を確認した後、それを使用してこの問題のクラス図を作成しました。これは次のようになります。
Invoice
SQLクエリは異なる場合があり(アプリケーションは異なるシステムから請求書データをロードする場合があります-PollosInvoice
またはStarInvoice
)、それらの処理方法(異なる実装)。
この場合、抽象化Invoice
をその実装から切り離し、請求書を特定のソフトウェアにエクスポートします(AcmeExporter
またはSigmaExporter
)。AcmeExporter
またSigmaExport
、InvoiceのDataTableから取得したトランザクションの日付、支払い方法、請求書の種類などの仕様に従ってフィールドを設定します。ExportInvoice()
必要なデータを返しDataTable
ます。InvoiceExporter
また、エンコーディングとファイル形式に2つのインターフェイスを使用しています。
あなたはそれについてどう思いますか?どのような欠陥/利点がありますか?