2

nHibernateを使用する既存のプロジェクトのソースコードを調べたところ、エンティティクラスごとに作成されたインターフェイスがあることがわかりました。例:CustomerクラスのICustomer 。ICustomerには主にプロパティが含まれており、メソッドはほとんど含まれていないため、このパターンの利点は何でしょうか。

4

2 に答える 2

9

私はノーと言うでしょう。インターフェイスは動作を実装から分離するため、実装はインターフェイスのクライアントに影響を与えることなくスワップアウトできます。

ドメインオブジェクトに別の実装が必要ない場合は、インターフェイスは必要ないと思います。動的プロキシの生成またはアスペクトまたは実装の変更が必要な場合にのみ、それらを導入してください。

于 2010-05-11T15:33:32.863 に答える
1

以前のコメントに同意しません... ただし、制御の反転 (IoC) や依存性注入などのパターンと組み合わせると、そのようなレイヤーを互いに分離するのがはるかに簡単になります。これにより、単体テストとモッキングが簡素化され、より疎結合のアーキテクチャにつながる可能性もあります。これはインターフェースなしでも実現できますが、クラスを封印せず、メンバーを仮想化して、モックを作成したり、インターセプト可能なプロキシを生成したりできるようにする必要があります...最後に、インターフェースを使用すると、関連する仮定を削除する必要があります1 つの具体的な実装ではなく、インターフェイス定義によって表されるコントラクトに焦点を当てます。

于 2010-05-13T22:23:16.613 に答える