私は理論の違いを理解していますが、コードの実装の違いは何ですか?誰かが例を挙げることはできますか?構成とJavaの双方向結合
答えて
構成は事実上、一方向の関連性がありますが、意味的には、単に「このことはそのことを参照している」という意味ではなく、「このことはこの物の一部です」という意味です。私たちはいくつかの方法
University university = new University();
Student bob = new Student("Bob");
university.addStudent(bob);
にこのようなものを作成して、私たちは大学でボブ・研究を行います知っている必要があります知っている学生や大学
class University {
private final Set<Student> students = new HashSet<Student>();
void addStudent(Student s){students.add(s);}
}
class Student {
private final String name;
public Student(String name) {
this.name = name;
}
}
を持って
目的。 だから我々は、大学
boolean contains(Student student){
for(Student s : students){
if(s.equals(student)) return true;
}
return false;
}
と、university.contains(bob)
のようなSMTを行うよりもためにいくつかの新しいメソッドを作成します。
しかし、私たちがユニバーシティへのリンクを持たないのはどうでしょうか。ボブに聞いてみる必要があります。しかしボブは知らない。だから、私たちは構成からバイ・ディレクションに行き、smtのようにsmtを作成します。
class University {
private final Set<Student> students = new HashSet<Student>();
void addStudent(Student s){
students.add(s);
s.setUniversity(this);
}
boolean contains(Student student){
for(Student s : students){
if(s.equals(student)) return true;
}
return false;
}
}
class Student {
private final String name;
private University university;
public Student(String name) {
this.name = name;
}
void setUniversity(University u){
university = u;
}
boolean doYouStudyInUniversity(){
return university != null;
}
}
//ask
bob.doYouStudyInUniversity();
コンストラクタでsetUniversityとaddStudentを強制して、新しい生徒が作成されたときに常に呼び出されるようにする必要がありますか? –
@Kenston Choi、それは使用しているコーディングスタイル/パラダイムによって異なります。とにかく、Javaで不変の双方向構造を構築するのはかなり難しい(プロキシを使って模倣できる)。 –
- 1. knockoutjsの双方向結合
- 2. 基準双方向結合?
- 3. 角2 ngClassとの双方向結合
- 4. 2つの一方向ストリームを双方向ストリームに結合する
- 5. AngularJSモデル、複数の$スコープ、双方向データ結合
- 6. 剣道ツリーリスト双方向データ結合角j
- 7. ASP.NETで双方向(双方向)データバインディングとは何ですか?
- 8. $ routeParamsとの双方向バインディング?
- 9. JSONとの双方向バインディング?
- 10. Javaの双方向マップですか?
- 11. Javaの双方向多値マップ
- 12. Java EE - 1対多の双方向
- 13. 双方向カスケード
- 14. 双方向バインド
- 15. 双方向マッピングリスト
- 16. 双方向Javaクライアント/サーバ通信
- 17. 双方向アダプタパターンとは
- 18. 双方向UDPクライアントとサーバー?
- 19. 角度指令 - ngモデルで双方向結合を設定する方法
- 20. 双方向接続
- 21. 双方向Mercurialマージ
- 22. C - 双方向リンクリスト
- 23. Hibernate - 双方向@OneToOne
- 24. ssh forward - 双方向
- 25. 双方向はWPF
- 26. C++「双方向」オブザーバーパターン
- 27. DataGridCheckboxColumn双方向バインディング
- 28. NHibernateの双方向のアソシエーション
- 29. @OneToOne単方向および双方向
- 30. Doctrine - OneToOne単方向対OneToOne双方向
お返事ありがとうございました。 http://stackoverflow.com/questions/4298177/association-vs-aggregation(3番目の回答)も助けました。 私は最終的な不確実性を持っています。 このダイアグラムで、関連付けられたクラスのインスタンスが正しいと確信していますか?http://img152.imageshack.us/img152/4981/21083939.pngは、図に示されていないクラスによって所有されていなければなりません(そうでなければ、全体と関連クラスの間に存在しなければなりませんか?) – amax