Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Адаптер — Adapter

Тема2.Структурні патерни.

Змістовий модуль 1. Поглиблене вивчення шаблонів проектування

 

Основним завданням структурних патернів є формування найбільш підходящої структури та взаємодії між класами для виконання певних завдань.
Якщо потрібно, щоб один об’єкт міг бути зрозумілим під іншим інтерфейсом, використовується Адаптер.

Якщо ви хочете розділити абстракцію та імплементацію так, що на одному боці ви матимете абстракцію, а на іншому декілька реалізацій, причому всі доступні до модифікацій, то слід задуматися над поєднанням таких незалежних абстракції та реалізації за допомогою патерну Міст.

Якщо елемент містить собі подібні елементи, а вони в свою чергу також можуть містити елементи, то найлегше таку структуру реалізувати за допомогоюКомпонувальника.

Для швидкої та динамічної можливості розширення існуючої функціональності, без зміни її носителя, можна скористатися Декоратором.

Якщо ваша система використовує багато об’єктів, що мають спільні дані, то такі дані можна винести та зробити загальнодоступними для економії пам’яті за допомогою патерну Легковаговик.

Якщо відсутня можливість працювати із об’єктом напряму, використайте Проксі, що дозволить донести ваші команди до пункту призначення.

З деяких причин я дуже довго думав над тим, який же може бути хороший приклад для Адаптера. Можна навести приклад, коли є операції, які так і називаються: ОпераціяА та ОпА, або придумати складний приклад з великою кількістю методів і пропертів в класі, що адаптується... Але весь цей час в думках у мене крутилася така штукенція, яку ми соваємо у розетку, коли вона вузька, ще СРСР-рівська, а ми хочемо запхати шнур для живлення ноутбука із товстою вилкою. Майже, як на ілюстрації, але не настільки жорстока.

Отож, у нас є вилка від зарядного пристрою, яка підходить в широкі роз’єми. В одній із квартир у нас все сучасне, тому NewElectricitySystem має метод MatchWideSocket, яким ми просто можемо скористатися. В іншій квартирі у нас проблемки, тому OldElectricitySytem має тільки метод MatchThinSocket. Нажаль ми не можемо собі дозволити взяти дрель і роздовбати отвори в розетці. Натомість ми купуємо адаптер, який надає можливість користуватися тією ж функціональністю споживання електричного струму, але із старої системи.

Адаптер надає можливість користуватися об’єктом, який не є прийнятним у нашій системі і який не можна змінити. Ми адаптуємо його функціональність через інший, відомий нашій системі, інтерфейс.


Читайте також:

  1. Відеоадаптер
  2. Компоненти плати мережного адаптера
  3. Мережеві адаптери. Означення та основні функції.
  4. Призначення, конструкція і характеристики пристроїв персональних комп’ютерів: накопичувачі, адаптери




Переглядів: 601

<== попередня сторінка | наступна сторінка ==>
Пробне тестування | Міст — Bridge

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.