当实现类是必需的并且绑定到接口协定时,如何使用Java中的接口实现松散耦合?
2022-09-04 08:31:36
当我们无论如何都要创建一个实现类时,松散耦合如何与接口相关联?强制实现类实现接口中定义的所有方法。我不明白这如何允许损失耦合?我是面向对象编程和软件设计的新手,所以如果你能对这个主题有所了解,那将是非常有帮助的。一个例子完全是锦上添花。
当我们无论如何都要创建一个实现类时,松散耦合如何与接口相关联?强制实现类实现接口中定义的所有方法。我不明白这如何允许损失耦合?我是面向对象编程和软件设计的新手,所以如果你能对这个主题有所了解,那将是非常有帮助的。一个例子完全是锦上添花。
关键的一点是,一个接口不仅允许你编写一个实现它的类,它还允许你编写几个类。
当您的代码通过使用接口与类交互时,该代码能够与实现所述接口的任何类一起工作,而不管它如何实现它。这允许您将不同的类提供给相同的代码,而无需对其进行修改。
请注意,接口不是实现组件松散耦合的唯一方法。松散耦合只是意味着组件能够一起工作,而无需假设彼此的内部工作原理。您之所以这样做,是因为您的组件越像黑匣子一样对待彼此,就越容易在一个组件上进行更改而不会影响任何其他组件。接口可以成为实现这一目标的一种工具,但它们既不是必需的,也不是在这方面值得一提的唯一工具。
实现类能够选择如何实现该功能。
public interface PersonRepository {
Person getPerson(String name);
}
可以通过读取CSV文件或查询数据库来实现。需要这个人的对象并不关心这个人是如何被发现或加载的,而只是关心它是如何被找到或加载的。
因此,它被认为是松散耦合的。
如果它是紧密耦合的,则需要知道如何构造SQL查询或读取CSV文件。