简单来说对象间存在 依赖、关联、聚合、组合4中关系,耦合度依次升高。
1.依赖。A对象做一件事时需要借助B对象的帮助,即A依赖B,实现上可用A的局部变量或者A中的方法形参来表示。use-a的含义。
class Car {
public static void run(){
System.out.println("汽车在奔跑");
}
}
class Driver {
//使用形参方式发生依赖关系
public void drive1(Car car){
car.run();
}
//使用局部变量发生依赖关系
public void drive2(){
Car car = new Car();
car.run();
}
//使用静态变量发生依赖关系
public void drive3(){
Car.run();
}
}
2.关联是依赖关系的持久性表现,可以理解为has-a的含义,将关联可以细分为聚合和组合2种实现。
2.1 聚合是将对象B作为类A的成员变量,且各自含有各自的生命周期。可用set方法实现,代码表现如下:
class People{
Car car;
House house;
//聚合关系中作为成员变量的类一般使用set方法赋值
public void setCar(Car car){
This.car = car;
}
public void setHouse(House house){
This.house = house;
}
public void driver(){
System.out.println(“车的型号:”+car.getType());
}
public void sleep(){
System.out.println(“我在房子里睡觉:”+house.getAddress());
}
}
2.2 组合,contain-a 关系,也是一种关联关系,同生命中期,一般用成员变量来实现,用构造方法进行赋值。代码表现如下:
class People{
Soul soul;
Body body;
//组合关系中的成员变量一般会在构造方法中赋值
Public People(Soul soul, Body body){
This.soul = soul;
This.body = body;
}
Public void study(){
System.out.println(“学习要用灵魂”+soul.getName());
}
Public void eat(){
System.out.println(“吃饭用身体:”+body.getName());
}
}
3. 其他的还有继承、实现这2种关系,是比较好理解的。