0

のようなクラスにすべてのデータを格納するとしますKittenStorage。次に、おそらく と呼ばれる特定の色の子猫を見つけたいクラスがありますKittenFinder。明らかに、これら 2 つの明確に異なるクラスを分離するようにオブジェクト指向プログラムを設計しましたが、今度KittenFinderは と直接やり取りする必要がありKittenStorageます。この 2 つの異なるクラスをどのように結び付けますか?

4

4 に答える 4

1

レイヤーを使用する必要があります。まず、データ アクセス層が必要です。このレイヤーには、直接データ ストレージ コマンドをサポートするクラスが含まれます。次に、ビジネス層が必要です。このレイヤーは、ビジネス ロジックで実行する必要があるすべてのことを実行します。このレイヤーは、データ アクセス レイヤーを介してデータ ストレージを使用します。必要に応じて、ビジネス層を介してデータ ストレージと通信する、より複雑なアルゴリズムを実装できるエンジン層を作成できます。最後に、エンジン層またはビジネス層を介してデータ ストレージと通信する UI があります。実際のストレージはデータベースであり、データ アクセス レイヤーはデータベースと通信します。これがお役に立てば幸いです。

于 2012-10-05T14:13:03.607 に答える
0

例を少し発展させましょう-KittenStorageは、storage.get(0)またはstorage [0]の形式で子猫へのインデックス付きアクセスを提供し、子猫の数を知るためのcountまたはsizeプロパティも持っているとします。店舗。このようにして、KittenFinderを実装して、前方検索を実行できます。

for (int i = 0; i < storege.size; i++)
{
     //return kitten if matches
}

または、 BinarySearchを実行できます

また、KittenStorageクラスには、永続性メカニズム(子猫をDBまたはファイルに保存するなど)が含まれる場合があります。多分それはペリシタンス戦略を含むことができます-永続化メカニズムが交換されることができるように異なるクラス。

これは関心の分離と呼ばれます-クラスは1つのことだけを実行し、1つの方法でのみ実行する必要があります-このようにして、コードを簡単に保守できます。

于 2012-10-05T13:58:19.693 に答える
0

一般的に、KittenFinder は KittenStorage に「依存」しています。あなたの質問は、この依存関係を設定 (注入) する方法です。それは、アプリケーション フレームワークの選択につながります。Spring フレームワークは、これを行う一般的な方法の 1 つです。

于 2012-10-07T07:34:50.667 に答える
0

場合によっては、子猫を返す KittenStorage に Find メソッドを置く人もいます。

KittenStorage が子猫用のストアであり、KittenFinder が KittenStorage 内の 1 つまたは複数の子猫用のファインダーであると仮定します。

そして、その子猫は保存可能で検索可能なアイテムであり、スクラッチなどのいくつかの動作もあり、保存可能で検索可能であることとは関係ありません。その後、子猫は IStorable によって KittenStorage にリンクされ、KittenFinder は IFindable によって KittenStorage にリンクされます。

DTO (データ転送オブジェクト) を使用するのにも十分な理由があります。これは単に子猫の状態です。つまり、あなたが見つけて保管しているものは、子猫のその引っかき傷ではありません。

基本的に、上記のすべては、PuppyStorage や PuppyFinder などもあり、できる限り分離したいという仮定を立てています。

于 2012-10-05T16:30:11.487 に答える