
<?php
//Target
interface IText {
//Request()
function getText(): string;
}
//Adaptee
class StringList {
private $rows = [];
//SpecificRequest()
function getString(): string {
return implode("\n", $this->rows);
}
function add(string $value) {
$this->rows[] = $value;
}
}
//Adapter
class TextAdapter extends StringList implements IText {
//Request()
function getText(): string {
return $this->getString();
}
}
function getTextAdapter(): TextAdapter {
$adapter = new TextAdapter();
$adapter->add("line 1");
$adapter->add("line 2");
return $adapter;
}
//Client
$adapter = getTextAdapter();
$text = $adapter->getText();
//text: line 1
// line 2
echo $text;
| Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов. |