Java Tutorial/Spring/Decouple
Closed Coupled
File: Main.java
<source lang="java">
import java.io.PrintStream; public class Main {
public static void main(String[] a) { MessageData source = new MessageData("Hello, world"); MessageReporter destination = new MessageReporter(); destination.write(System.out, source.getMessage()); }
} final class MessageData {
private final String message; public MessageData(String message) { this.message = message; } public String getMessage() { return message; }
} class MessageReporter {
public void write(PrintStream out, String message) { out.println(message); }
}</source>
Decouple With Interface
File: Main.java
<source lang="java">
public class Main {
public static void main(String[] a) { MessageData source = new SimpleMessageData("Hello, world"); MessageReporter destination = new StdoutMessageReporter(); destination.write(source.getMessage()); }
} interface MessageReporter {
void write(String message);
} interface MessageData {
String getMessage();
} class StdoutMessageReporter implements MessageReporter {
public void write(String message) { System.out.println(message); }
} class SimpleMessageData implements MessageData {
private final String message; public SimpleMessageData() { this("Hello, world"); } public SimpleMessageData(String message) { this.message = message; } public String getMessage() { return this.message; }
}</source>
Spring Style Decouple
File: helloworld-context.properties
<source lang="java">
source.(class)=SimpleMessageData destination.(class)=StdoutMessageReporter</source>