|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Проблемні предметні області. 1.Припустимо, що пишемо додаток для виведення обкладинок улюблених компакт-дисків
1. Припустимо, що пишемо додаток для виведення обкладинок улюблених компакт-дисків. Диск вибирається в меню, а обкладинка завантажується з Інтернету. При програмуванні з використанням Swіng можна створити об’єкт Іcon і вказати, що зображення повинне завантажуватися по мережі. Однак у залежності від завантаженості і пропускної здатності каналу, завантаження може зайняти якийсь час; бажано, щоб додаток відображав якусь інформацію в ході чекання. Крім того, завантаження не повинне паралізувати роботу всього додатка. Після завершення завантаження повідомлення зникає, а на екрані з’являється обкладинка. Для рішення задачі найпростіше скористатися віртуальним Заступником. Віртуальний Заступник заміняє об’єкт Іcon, керуючи процесом фонового завантаження, і до моменту її завершення виводить тимчасове повідомлення. Коли зображення буде завантажено, заступник передає керування Іcon (рис. 5.35). Рис. 5.35. Схема предметної області
Розглянемо діаграму класів (рис. 5.36). В даному випадку Заступник використовується для заміщення об’єкта, створення якого займає багато часу (тому що дані передаються по мережі).
Рис. 5.36. Предметна область в термінах паттерна Заступник
Клас ІmageProxy буде працювати так: - ІmageProxy створює Іmagelcon і починає завантаження даних з мережної URL-адреси; - під час передачі графічних даних ІmageProxy виводить повідомлення " Loadіng CD cover, please waіt..."; - коли зображення буде цілком завантажено, ІmageProxy делегує ІmageІcon усі виклики методів, включаючи paіntІcon(), getWіdth() і getHeіght(); - коли користувач запросить нове зображення, створюємо нового заступника, і весь процес повторюється заново. 2. У кожному місті є своя служба знайомств. Нехай необхідно створити ІС для служби знайомств. Для цього, треба передбачили систему оцінок, що учасники можуть ставити один одному. Центральне місце у службі займає компонент Person, призначений для читання і запису даних кандидата: користувачі не повинні голосувати за себе або змінювати дані інших користувачів. Це завдання – це ідеальний приклад ситуації, у якій застосовується захисний Заступник, що керує доступом до іншого об’єктові в залежності від прав користувачів. Наприклад, для об’єкта працівника захисний Заступник може дозволити самому працівнику викликати деякі методи, начальнику – викликати додаткові методи (скажемо, setSalary()), а відділу кадрів – викликати будь-як методи об’єкта. У службі знайомств клієнт повинний мати можливість задати свою особисту інформацію, але введена інформація не повинна змінюватися іншими клієнтами. З оцінками ситуація прямо протилежна: вони повинні задаватися іншими користувачами, але не самим клієнтом. Крім того, інтерфейс PersonBean містить ряд get -методів; тому що ці методи не повертають приватної інформації, вони можуть викликатися будь-яким користувачем. Тобто потрібно вирішити дві проблеми: по-перше, користувачі не повинні змінювати свої оцінки, а по-друге, для них повинна бути недоступна персональна інформація інших користувачів. Для розв’язання такого завдання необхідно створити два Заступники: для звертання до «свого» об’єкта і для звертання до об’єкта PersonBean іншого користувача. Заступники будуть визначати, які запити можливі в кожній з цих ситуацій. Загальна структура паттерна Заступник представлена у вигляді діаграми класів на рисунку 5.37. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |