Шаблон проектування адаптер. Pattern adapter.

Шаблон проектування Адаптер. 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 (Адаптер)

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

Поділися в соціальних мережах:

Схожі
Помилка 629Помилка 629
Як підключити iphone до інтернетЯк підключити iphone до інтернет
Шаблон проектування "стратегія" (pattern strategy).Шаблон проектування "стратегія" (pattern strategy).
Кращі wifi адаптери для kali linux 2017Кращі wifi адаптери для kali linux 2017
Ноутбук не підключається до wi-fi вирішуємо проблему 4-ма способамиНоутбук не підключається до wi-fi вирішуємо проблему 4-ма способами
Новий графічний адаптер sapphire hd 7790 з 2 гб пам`ятіНовий графічний адаптер sapphire hd 7790 з 2 гб пам`яті
Створення движка на mvc. Вступ.Створення движка на mvc. Вступ.
Вийшло нове оновлення додатка бездротової адаптер microsoft для windows 10Вийшло нове оновлення додатка бездротової адаптер microsoft для windows 10
802.11N: найшвидший wifi802.11N: найшвидший wifi
Huntkey es 90w ultra edition - універсальний блок живлення для ноутбуківHuntkey es 90w ultra edition - універсальний блок живлення для ноутбуків
» » Шаблон проектування адаптер. Pattern adapter.