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/>"; }
- Log in to post comments
- 2869 reads