
import java.util.*;
//Target
interface IText {
//Request()
String getText();
}
//Adaptee
class StringList {
List<String> rows = new ArrayList<>();
//SpecificRequest()
public String getString() {
return String.join("\n",rows);
}
public void add(String value) {
rows.add(value);
}
}
//Adapter
class TextAdapter extends StringList implements IText {
//Request()
public String getText() {
return getString();
}
}
TextAdapter getTextAdapter() {
var adapter = new TextAdapter();
adapter.add("line 1");
adapter.add("line 2");
return adapter;
}
//Client
var adapter = getTextAdapter();
var text = adapter.getText();
//text: line 1
// line 2
System.out.println(text);
| Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces. |