类的依赖、泛化、实现、关联、聚合和组合
1.依赖关系(Dependence)
只要在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方连编译都过不了。
public class PersonServiceBean {
private PersonDao personDao;//类
public void save(Person person){}
public IDCard getIDCard(Integer personId){
return null;
}
public void modify(){
Department department = new Department();
}
}
如上所示,PersonServiceBean和Person、IDCard、Department、PersonDao构成依赖关系。
- 如果类中用到了对方
- 如果是类的成员方法属性
- 如果是方法的返回类型
- 是方法接收的参数类型
- 方法中使用到
以上情况构成依赖关系
2.泛化关系(generalization)
泛化关系实际上就是继承关系,它是依赖关系的特例
public abstract class DaoSupport {
public void save(Object entity){}
public void delete(Object id){}
}
public class PersonServiceBean extends DaoSupport{}
- 泛化关系实际上就是继承关系;
- 如果A类继承了B类,我们就说A和B存在泛化关系
3.实现关系(Implementation)
实现是接口和类的关系,是指类实现了接口中定义的接口
public interface PersonService {
public void delete(Integer id);
}
public class PersonServiceBean implements PersonService{
@Override
public void delete(Integer id) {
System.out.println("delete...");
}
}
4.关联关系(Association)
关联关系是类与类之间的联系,是依赖关系的特例。关联分为双向和单向关联.
关系具有多重性,可能是一对一,也可能是一对多、多对多、多对一
单向一对一
public class Person{
private IDCard card;
}
public class IDCard{}
双向一对一
public class Person{
private IDCard card;
}
public class IDCard{
private Person person;
}
5.聚合关系(Aggregation)
聚合关系标识的是整体和部分的关系,整体和部分可以分开。聚合关系是关联关系的特例。
如:一台电脑由键盘、显示器、鼠标等构成;组成电脑的各个配件可以从电脑上分离出来,使用带空心菱形实线表示。
public class Computer {
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
6.组合关系(Composition)
组合也是整体与部分的关系,但是整体与部分不可以分开。简单来讲,组合是一种较为紧密的关系,从生命周期上看,部分和整体是共存亡的关系。聚合则是一种较为松散的关系,部分和整体的生命周期未必一致。
在程序中我们定义实体:Person与IDCard、Head,那么Head和Person是组合,IDCard和Person是聚合的关系
public class Person {
private Head head = new Head();
private IDCard idCard;
}