インターフェイスとそれを実装するクラスに関して、ソリューション/プロジェクトの構成方法に関する標準はありますか?私はMVP、DDDアプリケーションに取り組んでいて、他の人が自分たちのプロジェクトをどのようにレイアウトしているのか、そしてなぜ彼らがそのようにしているのかについてのフィードバックを歓迎します。ありがとう!!インターフェイスは、それらを実装する具体的なクラスとして同じ名前空間に存在する必要がありますか?
答えて
これらは論理的な名前空間に存在する必要があります。これは、同じ名前空間内に存在する必要があるかどうかの確固たるルールがないことを意味します。相対的に抽象的な名前空間は実装の横に並んでいないことがよくありますが、実装者と1対1のインタフェースは相互に並んでいる可能性が高くなります。
さらに重要な考慮事項は、インターフェイスを消耗品として再利用できるようにすることです。通常は、名前空間ではなくインターフェイスに沿ってアセンブリに入るものを考慮する必要があります。
Separate InterfacesのMartin Fowlerのパターンを確認すると、どこに配置するかを決めるのに役立ちます。
確かにそれを行う理由はありません。
実際に、インターフェイスのユーザーが具体的なクラスを認識する必要がない場合、複数の実装があり、インターフェイスを定義するグループが特定のバージョンを実装するグループと異なる場合(これは有効なケースです)、実装とインタフェースの名前空間を分離することをお勧めします。
私はC#についてあまりわからないですが、Javaで、パッケージのメンバーシップはメソッドの可視性を強化するための重要な組織のパターンです。 package-privateのものを利用したいのであれば、基本的に実装クラスを同じパッケージにまとめる必要があります(そうすれば、おそらくそれらをインタフェースと一緒にまとめることはできません)。
そうですね、ドメインオブジェクト用の名前空間とそのインタフェース用の異なる名前空間を持つプロジェクトを作成しています。私は、いくつかのサンプルプロジェクトをオンラインで見ていて、ドメインオブジェクトのインタフェースと具体的な実装をグループ化し、それがどのように機能しているかを見たいと思っていました。 – Cognitronic
- 1. 一般的な実装が、コンストラクタの引数は、私は、同じタイプの新しいオブジェクトを作成する必要があり、具体的なクラスにジェネリッククラスで
- 2. インターフェイスから必要なときに具体的なクラスにキャストするのは良い習慣ですか?
- 3. クラスはいつインターフェイスを実装する必要がありますか?
- 4. インポート名前空間のクラスは、具体的
- 5. WCF:すべてのデータ変換で同じ名前空間を使用する必要がありますか?
- 6. Castle.Windsor - 名前はなぜインターフェイスに似ている必要がありますか?
- 7. インターフェイスは実装とは別のプロジェクトにする必要がありますか?
- 8. 2つのインターフェイスで同じ名前のメソッドを実装する必要がある
- 9. デフォルトの名前空間とプレフィックス付きの名前空間は同じURIを共有しています - Pythonを使用して要素からデフォルトの名前空間URIだけを削除する必要があります
- 10. 名前を付けるクラスと名前空間は同じですか?
- 11. 別の名前空間(Python)にクラスが存在するオブジェクトを解除する方法はありますか?
- 12. UMLでは、抽象メソッドの具体的な実装を示す必要がありますか?
- 13. 具体的な名前空間サブクラスを持つインターフェイスクラスのC++クラス命名規則
- 14. 同じ名前空間がクラス
- 15. Typescriptで実装されている抽象クラスとインターフェイスが、インターフェイス内のすべてのメソッドを実装する必要があるのはなぜですか?
- 16. 同じ名前空間に同じ名前のクラスとインタフェースを持つことはできますか?
- 17. プログラム名がクラス名と同じである必要はありません-c#
- 18. 異なるページに存在する同じラベル名を確認する必要があります
- 19. 具体的なクラスをJavaで実装できますか?
- 20. 実用的なPHP名前空間ソリューションには何がありますか?
- 21. 私のクエリは少し具体的である必要があります
- 22. WCFでインターフェイスと実装を分離する必要がありますか?
- 23. はなぜJavaファイルは、公開クラスと同じ名前を持つ必要がありますか?
- 24. クラス名は、クラス自体またはそのクラスのインスタンスを反映する必要がありますか?
- 25. 内部.NETアプリケーションは、依存する内部ライブラリと同じ名前空間に配置する必要がありますか?
- 26. C#で名前空間とクラスの同じ名前を避けるには?
- 27. XMLに名前空間がない場合、XmlRoot名前空間で装飾されたクラスを逆シリアル化する方法はありますか?
- 28. 名前のないパラメータは、空の名前「_」を使用して記述する必要がありますか?
- 29. 同じNSMutablerArrayに保存されている同じ名前のデータを、その名前を参照して削除する方法はありますか?
- 30. 名前空間の名前は複数形にする必要がありますか?
+1興味深いが、私は(http://www.objectmentor.com/resources/articles/dip.pdf)[依存性逆転原理(PDF)]としてトリスを知っていました。 –
は少しこの状況で私の疑問をクリア:http://stackoverflow.com/questions/5840219/why-should-we-place-interfaces-with-classes-that-use-them-rather-than-those-that –