web-dev-qa-db-ja.com

システムの依存関係によって提供されるデータ構造(クラス)を使用することは良い考えですか?

[〜#〜] s [〜#〜]と呼ぶ新しいシステムを構築しています。これは、別のシステムからデータを取得する必要があるため、 [〜#〜] d [〜#〜]。システム[〜#〜] d [〜#〜]は、クライアントと、メモリ内の応答を表すクラス(POJO)のコレクションを提供します。どこでもクライアントを直接使用する代わりに、依存関係とのすべての相互作用を処理する一種のアダプターを作成しています。

今、アダプターにすべての相互作用を処理させるという私の最初の目標に忠実であり続けるために、システムによって提供されるPOJOを使用してアダプタークラスにデータを返させることは良い考えではないと思います(= /// =) 〜] d [〜#〜]私のシステムの残りの部分([〜#〜] s [〜#〜])は、何らかの形で、システム[〜#〜] d [〜#〜]についてよく知っているので、そもそも避けたいと思います。私の懸念は、この理想を達成するために、システム[〜#〜] d [〜#〜]のときに、同等の(同一ではなく、必要なデータのみ)POJOをシステムに書き込む必要があることです。 はすでにfree用のものを提供しています。

この状況で私が決定する(私の考えを支持する)のに役立つ設計原理を知っていますか?

以前にこの状況に直面したことがある場合、どのようにアプローチしましたか?

[〜#〜]更新[〜#〜]:コメントありがとうございます、彼らは助けてくれました。私はより少ないカップリング、より多くのPOJOアプローチに取り組みましたが、後でいくつかを組み合わせる必要があることに気付いたので、私の状況ではそれは良い考えだと思いますシステム[〜#〜] d [〜#〜]によって提供されるPOJOは、新しいシステムにとってより便利なものにするため、厳密には1-1の関係ではありません。

1
rendon

この状況で私が決定する(私の考えを支持する)のを助けることができる設計原理?

システムSは、システムDが存在することを知らないはずです。システムDが存在しないふりをします。次に、システムSが必要とすることを可能な限り最も便利な方法で実行するデータ構造(POJO、コレクションなど)を記述します。これで、アダプタの仕事は、データを1つのシステムフォームから別のシステムフォームに変換することです。

構造を同一にするのは魅力的です。その場合、アダプターはせいぜい頭のない分路です。そして今、あなたは役に立たない方法で整理する必要のないがらくたでいっぱいの構造で立ち往生しています。難しい問題を解決することを考える前に、それが行われていたらもっと良かったのではないでしょうか。

6
candied_orange

最高のデカップリングが必要な場合は、独自のPOJOを作成する必要があります。そうすることで、コーディングを増やすことができます。システムDの結合レベルと依存関係に問題がない場合は、彼のPOJOを使用できます。ただし、2つのシステム間の結合を制限するためのアダプターを作成する場合は、決定を続行し、独自のPOJOを作成する必要があります。

3
Elvis Jr

依存システム「d」のソースを自分でコンパイルできる場合、または「d」-dtosのファクトリメソッドを置き換えることができる場合は、d-dtosの使用される部分のJavaインターフェイスを作成し、これらをの代わりにsで使用できます。元の。このように、ソースはd-dtoではなく独自のインターフェースにのみ依存します

0
k3b