2

画像ファイルを読み取り、サイズ変更アルゴリズムを使用してズームインおよびズームアウトできるプロセスがあるとします。これは、次のようにクラスに分解できます。

ImageFileReader
ImageFileFormatIdentifier
ImageFileValidator
ImageFileHeaderParser
ImageZoomer
ImageResizer

これらのクラスを組み合わせる最も適切な方法は何ですか?

プログラマーが自分のコードに合うと思うようにそれらを構成できるように、それらは「緩い」べきですか?

それとも、あるオブジェクトが依存している別のクラスへの参照またはインターフェイスを持つように設計する必要がありますか?

さらに、階層化されたアーキテクチャでは、Serviceレイヤーでは最初のアプローチが優先される傾向があり、メソッドが合成に使用されるようです。これは一種のパターンですか?

4

1 に答える 1

1

読むときはコンテンツが有効であることを確認したいので、リーダーとバリデーターは密接に結びついていることをお勧めします。(これは編集前に適用されます!)

ズームとサイズ変更を任意に使用する場合は、包括的なコントローラーを用意し、画像を変更パラメーターを使用してズーム/サイズ変更に渡し、結果をコントローラーに戻すことをお勧めします。

複数のサービス (Reader/Identifier/Validator/etc) が、他のコンポーネントの動作を調整することによって単純化された機能 (Load/Zoom/Resize/Save/etc.) を提供する 1 つのサービスのように見える場合、これは Facade パターンの使用です。

さらに、制御の反転をパターンと見なすことで、別の時間に別の動作をプラグインすることができます。たとえば、イメージ ローダー、バリデーター、セーバーのインターフェイスを定義すると、別の時間に他のイメージ タイプのサポートを追加できます。

于 2013-03-21T17:22:11.393 に答える