<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

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

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

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

Подписавшись по 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

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

Ответить

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