<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Шаблон проектирования Адаптер. Pattern Adapter.

Шаблон проектирования Адаптер. Pattern Adapter.

Всем привет! Сегодня мы поговорим о шаблоне проектирования Адаптер(Pattern Adapter). Как понятно из названия, служит он для того, чтобы что-то адаптировать, но вот что? А на этот вопрос вам ответит эта статья.

Описание шаблона проектирования Адаптер

Давайте немного отойдем от программирования и посмотрим на адаптеры в реальной жизни. К примеру, вы купили какую-то технику(например, компьютер) за границей. Приехав с ней домой, вы обнаружили, что вилка другого стандарта и в нашу, российскую розетку, не подходит. Что же делать? Правильно! Нужно пойти в магазин и купить переходник, используя который вы сможет подключить ваш компьютер в сеть. Так вот, этот переходник и есть адаптер. В него мы вставляем иностранную вилку, а сам адаптер включаем в сеть и все прекрасно работает. Т.е. он служит просто прослойкой между нашей розеткой и иностранной вилкой.

Итак, думаю, что вы разобрались, что такое адаптер в жизни. В программировании - это то же самое.

Пример реализации адаптера на PHP

<?php
  interface iMain {
   public function send();
  }

  interface iAdaptee {
   public function inquiry();
  }

  class Adaptee implements iAdaptee {
   public function inquiry() {
    return __CLASS__."::".__METHOD__;
   }
  }

  class Adapter implements iMain {
   protected $adaptee = null;

   public function __construct() {
    $this->adaptee = new Adaptee();
   }

   public function send() {
    return $this->adaptee->inquiry();
   }
  }

  $goal = new Adapter();
  echo $goal->send(); // "Adaptee::inquiry"
?>

Итак, вот наш код. Давайте разбираться. У нас есть интерфейс iMain, клиентский код умеет работать с ним. Дальше у нас есть интерфейс iAdaptee, с которым клиентский код работать не умеет, но нам необходимо как-то с ним взаимодействовать. Потом у нас есть класс Adaptee, который наследует интерфейс iAdaptee и внутри у него есть метод с именем inquiry, который просто возвращает строку вида CLASS::METHOD. Вот мы подошли к классу Adapter, который наследует интерфейс iMain. Внутри него мы создаем защищенное свойство adaptee, равное null. Дальше в конструкторе мы создаем объект класса Adaptee и записываем его в наше защищенное свойство. В методе send мы возвращаем вызов метода inquiry.

Вот и все. Теперь создаем объект нашего адаптера и вызываем метод send.

Т.е. вся суть в том, что мы можем работать с одним интерфейсом, но не можем с другим и, чтобы как-то взаимодействовать с этим недоступным нам интерфейсом, мы и создаем адаптер, прослойку, через которую и реализуем нашу задачу.

Заключение

Сейчас вам может показаться, что все очень сложно и трудно, но это не так. Думаю, смысл адаптера вы поняли, а теперь вам нужно больше практики. Просмотрите еще раз код, который дан в этой статье, и попытайтесь его осмыслить. Строчка за строчку просматривайте и проговаривайте его, как будто вы интерпретатор php. Также, советую просмотреть код какого-нибудь фреймворка, ведь там этот шаблон используется довольно часто.

На этом я заканчиваю эту немаленькую статью, спасибо за внимание!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (5):

screnginer screnginer 13.06.2014 11:57:26

Ого, как оперативно. Спасибо за статью!

Ответить

php_programmer php_programmer 13.06.2014 14:41:09

Пожалуйста. Если есть вопросы - задавайте. Если есть еще какие-то пожелания - пишите :)

Ответить

ScarEngineer ScarEngineer 13.06.2014 16:36:33

Ну есть одно предложение... Многие совсем уж зеленые веб-разработчики не очень хорошо разбираются в создании баз данных. То есть, например, не знают о связывании таблиц и, когда хоть сделать, например, категории статей, то не делают отдельную таблицу для категорий, а пишут названия категорий в отдельно созданном поле для каждой статьи, что, несомненно неверно. А хороших статей про проектированию БД я не нашел, поэтому, думаю, было бы неплохо посвятить статью данной теме. P.S. Сам я в этом уже хорошо разбираюсь, но мне это далось трудно, поэтому не хочу, чтобы новички прошли через это.

Ответить

php_programmer php_programmer 13.06.2014 21:09:46

Хорошо, сделаем серию уроков, посвященных разным sql запросам, индексам и вообще правильной архитектуре баз данных. Спасибо за идею.

Ответить

DAGpro DAGpro 14.06.2014 02:50:48

Большое спасибо за статью,и я надеюсь вы на этом не остановитесь,а то на других сайтах ограничивались синглтоном и фабрикой,хоть и обещали продолжение.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.