PHP паттерн Адаптер - пример
Primary tabs
Будем адаптировать класс книги (адаптируемый):
class SimpleBook {
private $author;
private $title;
function __construct($author_in, $title_in) {
$this->author = $author_in;
$this->title = $title_in;
}
// здесь имеется какой-то свой интерфейс
function getAuthor() {
return $this->author;
}
function getTitle() {
return $this->title;
}
}
с помощью вот такого класса-адаптера:
class BookAdapter {
private $book;
function __construct(SimpleBook $book_in) {
$this->book = $book_in;
}
function getAuthorAndTitle() {// "добавляемый" метод
return $this->book->getTitle().' by '.$this->book->getAuthor();
}
}А вот пример использования "адаптированного" класса (теперь он скрыт внутри адаптера):
// клиентский код
writeln('Начало тестирования');
writeln('');
// создаём исходный объект
$book = new SimpleBook("Gamma, Helm, Johnson, and Vlissides", "Design Patterns");
// применяя адаптер к исходному - получаем кобинированную сущность
$bookAdapter = new BookAdapter($book);
// используем новый интерфейс (у нас это только один метод)
writeln('Author and Title: '.$bookAdapter->getAuthorAndTitle()); // вызов метода
writeln('');
writeln('Конец тестирования');
function writeln($line_in) {
echo $line_in."<br/>";
}
Источники:
http://sourcemaking.com/design_patterns/adapter/php
- Log in to post comments
- 3289 reads