我一直试图在我的代码中保持耦合,但我想我可能不完全理解它。我的基本理解是,耦合是“依赖类如何相互依赖并了解彼此的行为。”我知道依赖注入是减少耦合和IoC的一种方法。
以下是我提出的学生,教授和课程的简单示例。课程列出了学生和教授。我有一个控制器(使用MVC)注入Student和Professor对象。 以下是否仍然被认为是耦合或紧密耦合?这也是DI的一个例子,对吗?
学生班
public class Student {
private String firstName;
private String lastName;
private int studentID;
private int address;
private int telephone;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public int getAddress() {
return address;
}
public void setAddress(int address) {
this.address = address;
}
public int getTelephone() {
return telephone;
}
public void setTelephone(int telephone) {
this.telephone = telephone;
}
}
教授班
public class Professor {
private String firstName;
private String lastName;
private int professorID;
private int address;
private int telephone;
private int salary;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getProfessorID() {
return professorID;
}
public void setProfessorID(int professorID) {
this.professorID = professorID;
}
public int getAddress() {
return address;
}
public void setAddress(int address) {
this.address = address;
}
public int getTelephone() {
return telephone;
}
public void setTelephone(int telephone) {
this.telephone = telephone;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
课程班
import java.util.List;
public class Course {
private List<Student> students;
private Professor professor;
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
答案 0 :(得分:3)
我有一个控制器(使用MVC)注入Student和Professor对象。以下是否仍会被视为耦合或紧密耦合?
由于所有引用都是类,因此您具有紧密耦合的设计。一种好方法是在代码中使用接口。这将允许您随时更改实现,并且不会影响应用程序的其余部分。
这也是DI的一个例子,对吗?
如果您的课程,教授和学生都配置了bean,并且您在bean实例化期间指定了如何注入实例,那么它将是一个DI示例。到目前为止,只有三个POJO课程。
答案 1 :(得分:0)
你在这里放的东西似乎是你的MVC实现的Model部分,它除了setter-getters之外还具有有限的功能。要有一个很好的去耦和DI示例,您可能拥有实现某些接口的Model,View和Controller类。它们是分离的,因为每个类的实现都不知道/依赖于其他实现。它们仅基于很好地封装和隔离组件的接口来关联。
也可能你也有这些接口的假/测试实现
然后,有一个IoC设置控制每个组件的实现将被解决。