当一个实现类是强制性的并绑定到接口契约时,如何使用Java中的接口实现松散耦合?

Hor*_*ice 9 java oop spring design-patterns

无论如何,当我们必须创建一个实现类时,松散耦合如何与接口相关联?实现类被强制实现接口中定义的所有方法.我不明白这是如何允许失去耦合的?我是面向对象编程和软件设计的新手,所以如果你能对这个主题有所了解,那将会非常有用.一个例子就是锦上添花.

Phi*_*ipp 11

关键是接口不仅允许你编写一个实现它的类,它允许你写几个.

当您拥有通过使用接口与类交互的代码时,该代码能够与实现所述接口的任何类一起工作,无论它如何实现它.这允许您将不同的类提供给相同的代码而无需修改它.

请注意,接口不是达到松散耦合组件的唯一方法.松散耦合仅意味着组件能够一起工作而不会假设彼此的内部工作.这样做是因为您的组件越多地将对方视为黑盒子,就越容易在一个组件上进行更改而不影响任何其他组件.接口可以是实现这一目标的一种工具,但它们都不是必需的,它们也不是唯一值得一提的工具.


小智 9

实现类能够选择如何实现该功能.

public interface PersonRepository {
    Person getPerson(String name);
}
Run Code Online (Sandbox Code Playgroud)

可以通过读取CSV文件或查询数据库来实现.需要这个人的对象并不关心这个人是如何被发现或装载的.

因此,它被认为是松散耦合的.

如果它是紧密耦合的,则需要知道如何构造SQL查询或读取CSV文件.