Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.65 KB | None | 0 0
  1. /**
  2.  * Целевой класс объявляет интерфейс, с которым может работать клиентский код.
  3.  */
  4. class Target
  5. {
  6.     public function request(): string
  7.     {
  8.         return "Target: The default target's behavior.";
  9.     }
  10. }
  11.  
  12. /**
  13.  * Адаптируемый класс содержит некоторое полезное поведение, но его интерфейс
  14.  * несовместим с существующим клиентским кодом. Адаптируемый класс нуждается в
  15.  * некоторой доработке, прежде чем клиентский код сможет его использовать.
  16.  */
  17. class Adaptee
  18. {
  19.     public function specificRequest(): string
  20.     {
  21.         return ".eetpadA eht fo roivaheb laicepS";
  22.     }
  23. }
  24.  
  25. /**
  26.  * Адаптер делает интерфейс Адаптируемого класса совместимым с целевым
  27.  * интерфейсом.
  28.  */
  29. class Adapter extends Target
  30. {
  31.     private $adaptee;
  32.  
  33.     public function __construct(Adaptee $adaptee)
  34.     {
  35.         $this->adaptee = $adaptee;
  36.     }
  37.  
  38.     public function request(): string
  39.     {
  40.         return "Adapter: (TRANSLATED) " . strrev($this->adaptee->specificRequest());
  41.     }
  42. }
  43.  
  44. /**
  45.  * Клиентский код поддерживает все классы, использующие целевой интерфейс.
  46.  */
  47. function clientCode(Target $target)
  48. {
  49.     echo $target->request();
  50. }
  51.  
  52. $target = new Target;
  53. clientCode($target);
  54.  
  55. $adaptee = new Adaptee;
  56. $adapter = new Adapter($adaptee);
  57. clientCode($adapter);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement