Шаблон проектування адаптер. Pattern adapter.
Відео: патерн Адаптер (Adapter)
Всім привіт! Сьогодні ми поговоримо про шаблоні проектування Адаптер (Pattern Adapter). Як зрозуміло з назви, служить він для того, щоб щось адаптувати, але ось що? А на це питання вам відповість ця стаття.
Опис шаблону проектування Адаптер
Давайте трохи відійдемо від програмування і подивимося на адаптери в реальному житті. Наприклад, ви купили якусь техніку (наприклад, комп`ютер) за кордоном. Приїхавши з нею додому, ви виявили, що вилка іншого стандарту і в нашу, російську розетку, не підходить. Що ж робити? Правильно! Потрібно піти в магазин і купити перехідник, використовуючи який ви зможе підключити ваш комп`ютер в мережу. Так ось, цей перехідник і є адаптер. У нього ми вставляємо іноземну вилку, а сам адаптер включаємо в мережу і все прекрасно працює. Тобто він служить просто прошарком між нашою розеткою і іноземній виделкою.
Відео: Паттерни проектування
Отже, думаю, що ви розібралися, що таке адаптер в житті. У програмуванні - це те ж саме.
Приклад реалізації адаптера на PHP
lt ;?php
interface iMain {
publicfunction send() -
}
interface iAdaptee {
publicfunction inquiry() -
}
classAdapteeimplements iAdaptee {
publicfunction inquiry(){
return __CLASS__."::".__METHOD__-
}
}
classAdapterimplements iMain {
protected $ adaptee =null-
publicfunction __construct(){
$ this-gt;adaptee =newAdaptee() -
}
publicfunction send(){
return $ this-gt;adaptee-gt;inquiry() -
}
}
$ goal =newAdapter() -
echo $ goal-gt;send() -// "Adaptee :: inquiry"
?gt;
Отже, ось наш код. Давайте розбиратися. У нас є інтерфейс iMain, клієнтський код вміє працювати з ним. Далі у нас є інтерфейс iAdaptee, з яким клієнтський код працювати не вміє, але нам необхідно якось з ним взаємодіяти. Потім у нас є клас Adaptee, який успадковує інтерфейс iAdaptee і всередині у нього є метод з ім`ям inquiry, який просто повертає рядок виду CLASS :: METHOD. Ось ми підійшли до класу Adapter, який успадковує інтерфейс iMain. Усередині нього ми створюємо захищене властивість adaptee, рівне null. Далі в конструкторі ми створюємо об`єкт класу Adaptee і записуємо його в наше захищене властивість. У методі send ми повертаємо виклик методу inquiry.
Відео: Adapter (Шаблон проектування Адаптер)
От і все. Тепер створюємо об`єкт нашого адаптера і викликаємо метод send.
Тобто вся суть в тому, що ми можемо працювати з одним інтерфейсом, але не можемо з іншим і, щоб якось взаємодіяти з цим недоступним нам інтерфейсом, ми і створюємо адаптер, прошарок, через яку і реалізуємо нашу задачу.
висновок
Зараз вам може здатися, що все дуже складно і важко, але це не так. Думаю, сенс адаптера ви зрозуміли, а тепер вам потрібно більше практики. Перегляньте ще раз код, який дан в цій статті, і спробуйте його осмислити. Рядок за рядок переглядайте і промовляти його, як ніби ви інтерпретатор php. Також, раджу переглянути код якогось фреймворка, адже там цей шаблон використовується досить часто.
Відео: Шаблони Java. Adapter (Адаптер)
На цьому я закінчую цю немаленьку статтю, спасибі за увагу!
- Як в windows 7 встановити драйвер на wi-fi адаптер?
- Як на windows 10 відкотити драйвера wi-fi адаптера?
- Вийшло нове оновлення додатка бездротової адаптер microsoft для windows 10
- Ноутбук не підключається до wi-fi вирішуємо проблему 4-ма способами
- Заміна dvd на hdd в ноутбуці (заміна dvd приводу)
- Huntkey es 90w ultra edition - універсальний блок живлення для ноутбуків
- Кращі wifi адаптери для kali linux 2017
- Відеокарта geforce gtx 650 ti boost у виконанні gigabyte
- Як підключити usb-usb
- Як підключити iphone до інтернет
- Рішення проблеми з бездротовою мережею
- 802.11N: найшвидший wifi
- Мережеві powerline-адаптери tp-link
- Новий графічний адаптер sapphire hd 7790 з 2 гб пам`яті
- Створення движка на mvc. Вступ.
- Шаблон проектування "одинак" (pattern singleton).
- Тв-приставки minix neo x8 і neo x8s
- Шаблон проектування "стратегія" (pattern strategy).
- Шаблон проектування фасад. Pattern facade.
- Помилка 629
- Компактний комп`ютер foxconn at-5570