0

私は現在、いくつかのレベルの抽象化を備えたソフトウェアの設計に取り組んでいます。これは私がこれまでに設計し始めた中で最も複雑なコードであり、簡単にアップグレードする必要があるため、コーディングを開始する前に、正しい方向に進んでいることを確認したいと思います。

基本的に、クラスには3つの主要なレベルがあります。これらの2つのクラスは互いに話す必要があります。

1つ目は入力ソースデータです。現在、入力データには2つの主要なタイプがあり、類似しているが同一ではない出力を生成します。これらのクラスの主な目標は、2つの異なるソースからデータを取得し、それをプログラムの残りの部分で使用するための共通のインターフェースに変換することです。

2番目のセットは、外部ライブラリ用のアダプタになります。ライブラリは定期的に更新されており、何年にもわたって更新されないのではないかと疑う理由はありません。ほとんどの場合、各アップグレードは前のアップグレードと非常に似ていますが、新しいライブラリバージョンをサポートするためにいくつかの小さな変更が加えられている可能性があります。このレベルは、入力を取得し、出力クラスを使用するためにそれらをフォーマットする役割を果たします。

最後のクラスは出力です。これには複数のバージョンが必要になるとは思いませんが、少なくとも2つの異なる出力ディレクトリを指定する必要があります。最も簡単な方法は、出力クラスの作成時に出力ディレクトリを渡すことだと思います。これが、必要な抽象化の唯一のレベルです。このクラスは頻繁に更新されますが、複数のバージョンをサポートする必要はありません。

4

1 に答える 1

0

コードを次のように設定します。基本的にはブリッジパターンに従いますが、複数の抽象化レイヤーを使用します。

入力クラスは抽象化になります。現在、出力を取得する2つの異なる手段は、2つの異なる具象クラスであり、必要に応じて、さらに具象クラスを追加できます。

ラッパークラスはファクトリパターンになります。ほとんどのコードはさまざまな実装間で共通である必要があるため、これはわずかな違いを処理するためにうまく機能するはずです。

出力クラスは、実装者クラスの一部として含まれます。このクラスに必要なバージョンは1つだけなので、実際に必要なパターンはありません。また、実装者はシングルトンになる可能性があります。

于 2012-12-28T14:58:53.683 に答える