1. 依賴關(guān)系(Dependency)
單向筹我,表示一個類依賴于另一個類的定義,其中一個類的變化將影響另外一個類茂附,是一種“use a”關(guān)系
如果A依賴于B舒岸,則B表現(xiàn)為A的局部變量撼港,方法參數(shù)坪它,靜態(tài)方法調(diào)用等
person類依賴于card類
public class Person {
public void doSomething(){
Card card = new Card();//局部變量
....
}
}
public class Person {
public void doSomething(Card card){//方法參數(shù)
....
}
}
public class Person {
public void doSomething(){
int id = Card.getId();//靜態(tài)方法調(diào)用
...
}
}
2. 關(guān)聯(lián)關(guān)系(Association)
單向或雙向(通常我們需要避免使用雙向關(guān)聯(lián)關(guān)系),是一種"has a"關(guān)系帝牡,如果A單向關(guān)聯(lián)B往毡,則可以說A has a B,通常表現(xiàn)為全局變量
public class Person {
public Phone phone;
public void setPhone(Phone phone){
this.phone = phone;
}
public Phone getPhone(){
return phone;
}
}
3. 聚合關(guān)系(Aggregation)
單向靶溜,關(guān)聯(lián)關(guān)系的一種开瞭,與關(guān)聯(lián)關(guān)系之間的區(qū)別是語義上的,關(guān)聯(lián)的兩個對象通常是平等的,聚合則一般不平等惩阶,有一種整體和局部的感覺,實(shí)現(xiàn)上區(qū)別不大
Class由Student組成扣汪,其生命周期不同断楷,整體不存在了,部分依然存在崭别,當(dāng)前Team解散了冬筒,人還在,還可以加入別的組
public class Team {
public Person person;
public Team(Person person){
this.person = person;
}
}
4. 組合關(guān)系(Composition)
單向茅主,是一種強(qiáng)依賴的特殊聚合關(guān)系
Head舞痰,Body,Arm和Leg組合成People诀姚,其生命周期相同响牛,如果整體不存在了,部分也將消亡
public class Person {
public Head head;
public Body body;
public Arm arm;
public Leg leg;
public Person(){
head = new Head();
body = new Body();
arm = new Arm();
leg = new Leg();
}
}
5. 繼承關(guān)系(Inheritance)
類實(shí)現(xiàn)接口赫段,類繼承抽象類呀打,類繼承父類都屬于這種關(guān)系
可以分得更細(xì):
實(shí)現(xiàn)(Realization):類實(shí)現(xiàn)接口屬于這種關(guān)系
泛化(Generalization):即"is a"關(guān)系,類繼承抽象類糯笙,類繼承父類都屬于這種關(guān)系