我理解理論上的差異,但代碼實現有什麼區別?有人可以提供一些例子嗎?Java中的組合與雙向關聯
1
A
回答
0
組成實際上是單向關聯 - 除了語義上,我們將它解釋爲意思是「那件東西是這件東西的一部分」,而不是簡單地說「這件東西有對這件東西的引用」。
3
目的,我們有學生和大學
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;
}
}
我們以某種方式
University university = new University();
Student bob = new Student("Bob");
university.addStudent(bob);
創造這些東西,知道我們需要知道在大學沒有鮑勃的研究。 因此,我們創造了一些新的方法,爲大學
boolean contains(Student student){
for(Student s : students){
if(s.equals(student)) return true;
}
return false;
}
和,比做SMT像university.contains(bob)
。
但是,如果我們還沒有鏈接到uniwersity,會怎樣。我們需要問問鮑勃。但鮑勃不知道。所以我們從組合到雙向去創造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();
+0
我們是否應該在構造函數中實施setUniversity和addStudent以確保在創建新學生時始終調用它們? – 2012-06-24 03:49:03
相關問題
- 1. 複合模式與組件之間的雙向關聯
- 2. OneToOne雙向雙向關聯
- 3. 雙向關聯
- 4. 在NHibernate中與索引集合的雙向一對多關聯
- 5. NHibernate雙向關聯
- 6. 聯合分組在雙向圖?
- 7. Java中的雙向集合
- 8. OneToMany雙向關聯示例
- 9. Ruby on Rails雙向關聯
- 10. 雙向關聯中的泛型
- 11. 關聯與聚合與Java中的合成
- 12. 在我的java模型中管理雙向關聯
- 13. java中的關聯數組?
- 14. java中的泛型的雙向耦合
- 15. 將關聯,聚合和組合轉換爲java中的代碼?
- 16. 左聯合關聯數組
- 17. NHibernate的雙向許多-to-many關聯
- 18. 雙向Sails.js上的多對多關聯
- 19. 雙關聯數組或索引+關聯數組
- 20. 雙向級聯
- 21. 無法找出與連接表的一對多雙向關聯
- 22. 休眠與主鍵作爲外鍵的雙向關聯
- 23. MySQL的聯合與和雙表格
- 24. JPA級聯在雙向關聯中不使用Hibernate?
- 25. Highcharts:與DrillDown組合雙軸
- 26. 在java中2個數組的聯合?
- 27. 將一組向量與numpy中的另一個關聯?
- 28. 與WillCascadeOnDelete單向關聯
- 29. 合併PHP關聯數組
- 30. PHP合併關聯數組
感謝您的答案。 http://stackoverflow.com/questions/4298177/association-vs-aggregation(第三個答案)也有幫助。 我有一個最後的不確定性,我希望有人可以解決。 我是否正確相信圖中相關類的實例http://img152.imageshack.us/img152/4981/21083939.png將不得不由圖中未顯示的類擁有(否則聚合關係會必須在整個班級和相關班級之間存在?)? – amax 2010-12-06 14:50:40