gpt4 book ai didi

java - Spring 和接口(interface)

转载 作者:IT老高 更新时间:2023-10-28 13:48:53 24 4
gpt4 key购买 nike

我到处阅读有关 Spring 如何鼓励您在代码中使用接口(interface)的信息。我没看到。 spring xml 配置中没有接口(interface)的概念。 Spring 的哪一部分实际上鼓励您使用接口(interface)(除了文档)?

最佳答案

Dependency Inversion Principle很好地解释了这一点。特别是图 4。

A. High level modules should not depend on low level modules. Both should depend upon abstractions.

B. Abstraction should not depend upon details. Details should depend upon abstractions.

将上面链接中的例子翻译成java:

public class Copy {
private Keyboard keyboard = new Keyboard(); // concrete dependency
private Printer printer = new Printer(); // concrete dependency
public void copy() {
for (int c = keyboard.read(); c != KeyBoard.EOF) {
printer.print(c);
}
}
}

现在有依赖倒置:

public class Copy {
private Reader reader; // any dependency satisfying the reader interface will work
private Writer writer; // any dependency satisfying the writer interface will work
public void copy() {
for (int c = reader.read(); c != Reader.EOF) {
writer.write(c);
}
}
public Copy(Reader reader, Writer writer) {
this.reader = reader;
this.writer = writer;
}
}

现在 Copy 支持的不仅仅是从键盘复制到打印机。

它能够从任何 Reader 复制到任何 Writer 而不需要对其代码进行任何修改。

现在有了 Spring:

<bean id="copy" class="Copy">
<constructor-arg ref="reader" />
<constructor-arg ref="writer" />
</bean>

<bean id="reader" class="KeyboardReader" />
<bean id="writer" class="PrinterWriter" />

或许:

<bean id="reader" class="RemoteDeviceReader" />
<bean id="writer" class="DatabaseWriter" />

关于java - Spring 和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com