我理解理論上的差異,但代碼實現有什麼區別?有人可以提供一些例子嗎?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. Silverlight中的雙向級聯組合框
- 3. OneToOne雙向雙向關聯
- 4. 雙向關聯
- 5. 雙向關聯
- 6. 雙向關聯
- 7. 在NHibernate中與索引集合的雙向一對多關聯
- 8. NHibernate雙向關聯
- 9. 聯合分組在雙向圖?
- 10. Java中的雙向集合
- 11. 如何與Java中的數組關聯?
- 12. 雙向關聯容器
- 13. OneToMany雙向關聯示例
- 14. SQLAlchemy雙向關聯代理
- 15. Ruby on Rails雙向關聯
- 16. NHibernate中的雙向一對多關聯
- 17. 雙向關聯中的泛型
- 18. 關聯與聚合與Java中的合成
- 19. 在我的java模型中管理雙向關聯
- 20. java中的關聯數組?
- 21. 關聯數組中的雙重索引
- 22. 雙向組關聯緩存命中/未命中檢查
- 23. java中的泛型的雙向耦合
- 24. 將關聯,聚合和組合轉換爲java中的代碼?
- 25. 左聯合關聯數組
- 26. NHibernate的雙向許多-to-many關聯
- 27. 雙向Sails.js上的多對多關聯
- 28. 雙關聯數組或索引+關聯數組
- 29. 雙向級聯
- 30. 雙向多對多關聯使用Map而不是集合
感謝您的答案。 http://stackoverflow.com/questions/4298177/association-vs-aggregation(第三個答案)也有幫助。 我有一個最後的不確定性,我希望有人可以解決。 我是否正確相信圖中相關類的實例http://img152.imageshack.us/img152/4981/21083939.png將不得不由圖中未顯示的類擁有(否則聚合關係會必須在整個班級和相關班級之間存在?)? – amax 2010-12-06 14:50:40