文章目录
下面依赖关系从低到高,耦合度越来越高。
5.1.1. 依赖(Dependency)
在A类中调用B类的方法,在MyClass中方法的参数是另外一个类,在类中调用了另外类的方法。
public class MyClass {
public void doSomething(DependencyClass dependency) {
dependency.doSomething();
}
}
public class DependencyClass {
public void doSomething() {
// 实现特定的功能
}
}
5.1.2. 关联(Association)
在A类中的成员变量是B类。Student类的成员变量是Classroom对象。
public class Student {
private String name;
private Classroom classroom;
public Student(String name) {
this.name = name;
}
public void setClassroom(Classroom classroom) {
this.classroom = classroom;
}
}
public class Classroom {
private List students;
public void addStudent(Student student) {
students.add(student);
student.setClassroom(this);
}
}
5.1.3. 聚合(Aggregation)
A类中的成员变量是个集合。
public class University {
private List departments;
public void addDepartment(Department department) {
departments.add(department);
}
}
public class Department {
private University university;
public Department(University university) {
this.university = university;
}
}
5.1.4. 组合(Composition)
关联多个对象,有单个对象,有集合对象
public class Car {
private Engine engine;
private List tires;
public Car() {
engine = new Engine();
tires = new ArrayList<>();
for (int i = 0; i < 4; i++) {
tires.add(new Tire());
}
}
}
public class Engine {
// 引擎的具体实现
}
public class Tire {
// 轮胎的具体实现
}
5.1.5. 继承(泛化)(Inheritance)
B类继承A类,进行功能扩展,有extends关键字判别。
public class Animal {
public void eat() {
// 具体实现
}
}
public class Dog extends Animal {
public void bark() {
// 具体实现
}
}
5.1.6. 实现(Implementation)
实现接口,有implements关键字判别。
public interface InterfaceA {
void methodA();
}
public class ClassA implements InterfaceA {
public void methodA() {
// 具体实现
}
}
5.1.7. 关联、聚合、组合的区别
这三种代码很相近,但语义不同,也就是表达的意思,关注的重点不同。
关联是一种关系,表示两个或多个对象之间的联接。它描述了对象之间的一般关系,可以是单向的或双向的,可以有一对一、一对多或多对多的关联关系。关联关系通常具有较松散的耦合,对象之间可以独立存在,关系可以随时建立或断开。关联关系通常通过对象之间的引用或指针来实现。
聚合是一种关系,表示整体对象拥有部分对象。聚合是一种弱关系,部分对象可以独立于整体对象而存在。整体对象可以包含多个部分对象,同时部分对象也可以属于其他整体对象。聚合关系是一种"has-a"关系,整体对象具有部分对象。部分对象的生命周期不依赖于整体对象,即可以在整体对象存在之前或之后创建和销毁。
组合是一种关系,表示整体对象由部分对象组成,且部分对象的生命周期与整体对象一致。组合是一种强关系,部分对象不能独立于整体对象存在。整体对象包含了部分对象,并负责管理其生命周期。组合关系是一种"owns-a"关系,整体对象拥有部分对象。部分对象的创建和销毁由整体对象负责,与整体对象的生命周期紧密相关。
小结:
关联关系描述了对象之间的一般关系,两者可以独立存在,关系可以随时建立或断开;
聚合关系是整体拥有部分的关系,部分对象可以独立存在于整体对象之外;
组合关系是整体由部分组成的关系,部分对象的生命周期与整体对象一致,由整体对象负责管理。