Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Целевой класс объявляет интерфейс, с которым может работать клиентский код.
- */
- class Target
- {
- public function request(): string
- {
- return "Target: The default target's behavior.";
- }
- }
- /**
- * Адаптируемый класс содержит некоторое полезное поведение, но его интерфейс
- * несовместим с существующим клиентским кодом. Адаптируемый класс нуждается в
- * некоторой доработке, прежде чем клиентский код сможет его использовать.
- */
- class Adaptee
- {
- public function specificRequest(): string
- {
- return ".eetpadA eht fo roivaheb laicepS";
- }
- }
- /**
- * Адаптер делает интерфейс Адаптируемого класса совместимым с целевым
- * интерфейсом.
- */
- class Adapter extends Target
- {
- private $adaptee;
- public function __construct(Adaptee $adaptee)
- {
- $this->adaptee = $adaptee;
- }
- public function request(): string
- {
- return "Adapter: (TRANSLATED) " . strrev($this->adaptee->specificRequest());
- }
- }
- /**
- * Клиентский код поддерживает все классы, использующие целевой интерфейс.
- */
- function clientCode(Target $target)
- {
- echo $target->request();
- }
- $target = new Target;
- clientCode($target);
- $adaptee = new Adaptee;
- $adapter = new Adapter($adaptee);
- clientCode($adapter);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement