АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Проблемні предметні області. 1.Припустимо, що пишемо додаток для виведення обкладинок улюблених компакт-дисків

Читайте также:
  1. Проблемні предметні області.
  2. Проблемні предметні області.
  3. Проблемні предметні області.
  4. Проблемні предметні області.
  5. Проблемні предметні області.
  6. Проблемні предметні області.

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.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)