|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Учасники паттерна. - зберігає посилання, які дозволяють заступнику звернутися до реального суб’єкту1. Proxy – заступник: - зберігає посилання, які дозволяють заступнику звернутися до реального суб’єкту. Об’єкт класу Proxy може звертатися до об’єкта класу Subject, якщо інтерфейси класів RealSubject і Subject однакові; - надає інтерфейс, ідентичний інтерфейсу Subject так, що заступник завжди може бути підставлений замість реального суб’єкта; - контролює доступ до реального суб’єкту і може відповідати за створення і видалення. Інші обов’язки залежать від виду Заступника: - віддалений Заступник відповідає за кодування запиту та його аргументів і відправлення закодованого запиту реальному суб’єкту в іншому адресному просторі; - віртуальний Заступник може кешувати додаткову інформацію про реальний суб’єкт, щоб відкласти його створення; - захисний Заступник перевіряє, чи має викликаний об’єкт необхідні для виконання запиту права. 2. Subject – суб’єкт: - визначає загальний для RealSubject і Proxy інтерфейс так, що клас Proxy можна використовувати скрізь, де очікується RealSubject. 3. RealSubject – реальний суб’єкт – клас, що виконує фактичну роботу, а заступник керує доступом до нього: - визначає реальний об’єкт, представлений заступником.
Рис. 5.37. Діаграма класів паттерна Заступник
Відносини учасників паттерна. Паттерн Proxy потребує наявність деякого об’єкта (далі « цільовий клас »), до якого буде здійснюватися доступ за допомогою спеціально створеного об’єкта сурогату У приведеному далі прикладі (рис. 5.38) цільовий об’єкт Math створюється відразу з об’єктом сурогату, тому що клас math не є «важким» і буде створюватися швидко.
Рис. 5.38. Діаграма послідовності для паттерна Заступник
Приклад показує, як за допомогою об’єкта сурогату можна виконувати різні перевірки перед безпосередньою передачею даних цільовому класові. Сурогат або Заступник це об’єкт, інтерфейс якого ідентичний інтерфейсу реального об’єкта. При першому запиті клієнта Заступник створює реальний об’єкт, що зберігає його адресу і потім відправляє запит цьому реальному об’єкту. Всі наступні запити просто переадресовуються інкапсульованому реальному об’єкту. В деяких випадках Proxy відповідає за створення та знищення RealSubject. Клієнти взаємодіють з RealSubject через Proxy. Оскільки Proxy і RealSubject реалізують спільний інтерфейс (Subject), Proxy може використовуватися всюди замість RealSubject. Proxy також управляє доступом до RealSubject. Результати використання. Реалізувавши доступ до паттерну через об’єкт сурогату, можна отримати додатковий рівень роботи з цільовим об’єктом. На цьому рівні можна займатися оптимізацією, створюючи цільові об’єкти тільки в міру того, як вони будуть використовуватися. Можна займатися перевіркою даних перед передачею в цільовий об’єкт. В об’єкті сурогату можна навіть вести логування доступу до об’єкта. Adapter надає своєму об’єкту інший інтерфейс. Proxy надає той же інтерфейс. Decorator надає розширений інтерфейс. Decorator і Proxy мають різні цілі, але схожі структури. Обидва вводять додатковий рівень побічності: їх реалізації зберігають.
Контрольні запитання
1. Визначення та мета паттерна Міст (Bridge). 2. Визначення та мета паттерна Адаптер (Adapter). 3. Визначення та мета паттерна Компонувальник (Composite). 4. Визначення та мета паттерна Фасад (Faсade). 5. Визначення та паттерна Декоратор (Decorator). 6. Визначення та паттерна Заступник (Proxy). 7. Наведіть приклад практичного застосування паттерна Міст (Bridge) та нарисуйте діаграму класів програмного додатку. 8. Наведіть приклад практичного застосування паттерна Адаптер (Adapter) та нарисуйте діаграму класів програмного додатку. 9. Наведіть приклад практичного застосування паттерна Компонувальник (Composite) та нарисуйте діаграму класів програмного додатку. 10. Наведіть приклад практичного застосування паттерна Фасад (Faсade) та нарисуйте діаграму класів програмного додатку. 11. Наведіть приклад практичного застосування паттерна Декоратор (Decorator) та нарисуйте діаграму класів програмного додатку. 12. Наведіть приклад практичного застосування паттерна Заступник (Proxy) та нарисуйте діаграму класів програмного додатку. 13. Перерахуйте структурні паттерни рівня об’єктів та рівня класів.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |