UML类关系图
1. 关联
关联,强依赖,在 java中的表现为成员变量,通过构造器或方法注入
publicclassStudent{
privateHomeInfo homeInfo;
publicStudent(HomeInfo homeInfo){
this.homeInfo = homeInfo;
}
publicvoidsetHomeInfo(HomeInfo homeInfo){
this.homeInfo = homeInfo;
}
}
2. 依赖
依赖,在java中的表现为方法变量,或方法内变量
publicclassDriver{
publicvoiddrive(Car car){
System.out.println("司机开" + car.getName()+ "车");
}
publicvoiddriveBus(){
Car car = new Car("公交");
System.out.println("司机开" + car.getName()+ "车");
}
}
3. 泛化
泛化(继承),在java中的表现为继承抽象类、接口、实体类
publicclassCarFactory extendsAbstractCarFactory{
@SuppressWarnings("unchecked")
@Override
public<T extendsCar> T createCar(Class<T> c){
Car car = null;
try{
car = (Car)Class.forName(c.getName()).newInstance();
}catch(InstantiationException e){
thrownew RuntimeException(e);
}catch(IllegalAccessException e){
thrownew RuntimeException(e);
}catch(ClassNotFoundException e){
thrownew RuntimeException(e);
}
return (T)car;
}
}
4. 实现
实现,在java中的表现为实现接口
publicclassUserServiceImpl implements UserService{
publicUser getUserInfo(String userName){
returnnew User();
}
}
5. 组合
组合,强聚合,整体和部分的关系,在java中的表现为部分为成员变量且在构造函数或语句块中初始化,生命周期同时创建同时销毁(同生共死),业务上部分不能和其他整体换,比如一个人的脑袋不能和其他人换,再比如一个公司的财务部门不能和其他公司换
publicclassPerson{
privateHead head;
publicPerson(String name){
head= newHead(name);
System.out.println(head.getName()+ "有毛病");
}
}
6. 聚合
聚合,整体和部分的关系,在java中的表现为部分为成员变量且在构造函数或方法中注入,业务上部分可以和其他整体换,比如一辆车的引擎可以和其他车同类型引擎换,再比如一个雁群中的一个大雁可以和其他雁群换
publicclassGeeseGroup{
privateList<Geese> geeseList= newArrayList<Geese>();
publicGeeseGroup(List<Geese> geeseList){
this.geeseList = geeseList;
}
publicvoidaddGeese(Geese geese){
geeseList.add(geese);
}
}