
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 implements IText {
public StringList rowList;
//Request()
public String getText() {
if (rowList == null) {
return "";
}
return rowList.getString();
}
}
TextAdapter getTextAdapter() {
var adapter = new TextAdapter();
var rowList = new StringList();
rowList.add("line 1");
rowList.add("line 2");
adapter.rowList = rowList;
return adapter;
}
//Client
var adapter = getTextAdapter();
var text = adapter.getText();
//text: line 1
// line 2
System.out.println(text);
| Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов. |