2016-04-05 16 views
0

私はエンティティAとBを持っているとしましょう。それぞれに対して私はserviceXとrepositoryXを持っています。 serviceAからBのものが必要な場合、私はserviceBに電話してはいけませんか?リポジトリBを直接呼び出す必要がありますか?ベストプラクティス:他のサービスまたは直接リポジトリを呼び出すサービス?

ありがとうございます。

+0

「直接呼び出す」とはどういう意味ですか?あなたのリポジトリとサービスはエンティティを使わずにどのようにアクセスできますか?あなたはシングルトン、サービスプロバイダなどを介してそれらを紹介する予定ですか?私たちはいくつかの詳細を必要としていると思います。 – IceFire

+0

あなたのコメントをありがとう。私は総称していた。私は、Aのビジネスロジックを管理するために、エンティティAとサービスAの上にいくつかの操作を持つリポジトリAがあると考えていました。 Bと同じです。彼らはシングルトンです。質問はベストプラクティスに関するものです。 serviceAのメソッドの場合、repositoryB.foo()を呼び出すか、またはrepositoryB.foo()を呼び出すメソッドserviceB.foo()を呼び出す必要がありますか? – ldepablo

答えて

1

私が理解できるように、AとBの2つの層:ビジネスロジック(サービス)とデータアクセス(リポジトリ)があります。 ベストプラクティスは、AとBがインターフェイスを介して通信する別々のコンポーネントであることを確認することです。 AのデータアクセスはコンポーネントAのプライベートにする必要があります。したがって、コンポーネントBがコンポーネントAからのデータを必要とする場合、コンポーネントAにデータアクセスレイヤではなくパブリックインターフェイスを使用するように要求します。

+0

ご返信ありがとうございます。それは実際に私がやっている方法です。それはちょうど私はいくつかの循環参照を取得しているが、私はそれらを回避する方法を見ることができません。新しい質問を投稿します。 – ldepablo

関連する問題