Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Практичне завдання.

Читайте также:
  1. Sup3;Практичне завдання
  2. Вид бойового забезпечення, розвідка. Мета, основні вимоги, види, завдання.
  3. Вправи та завдання. Модуль 1.
  4. Ефект Допплера в акустиці. Практичне проявлення.
  5. Основні напрями діяльності сімейних медиків та основні завдання.
  6. Порівняльна типологія як наука, її мета та завдання. Розділи типології мов.
  7. Практичне завдання

Лабораторна робота №2

Паттерн Abstract Factory

1. Теоретичні відомості.

Призначення

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

Застосування

Використовуйте патерн Abstract Factory, коли:

· система не повинна залежати від того, як створюються, компонуються і представляються об’єкти, що входять в нього;

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

· система повинна конфігуруватися одним із сімейств об’єктів; а ми хочемо надати бібліотеку об’єктів, розкриваючи лише їхні інтерфейси, але не реалізацію.

 

Структура

Практичне завдання.

Застосуємо паттерн Abstract Factory до побудови деякого парку автомобілів. Припустимо нам потрібно створювати певне сімейство автомобілів для конкретних цілей. А саме нам потрібні: легкові машини, вантажні та автобуси.

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

Клас FleetFactory може створювати різновиди автомобілів: легкові, вантажівки, автобуси. Це фабрика. Вона буде використовуватися клієнтською частиною / програмою, яка знає як створювати парк, тобто в яких кількостях наповнювати його різними видами транспортних засобів (наприклад, вона зчитує цей план автопарку з конфігураційного файлу). Цій програмі на вхід в якості аргументу передається параметр типу фабрика, тобто типу FleetFactory.

Далі потрібні відповідно абстрактні класи продуктів: легкова машина, вантажна, автобус. Припустимо, потрібні 2 сімейства автомобілів: російські марки і американські. Відповідно, реалізуємо 2 абстрактні фабрики і 2 ряди продуктів-автомобілів.

Російська фабрика автомобілів: RusFleetFactory, Kamaz, Liaz, Vaz2110.

Американська фабрика автомобілів: AmericanFleetFactory, Dodge, CityJet, GeneralMotorsTruck.

Тепер розглянемо програму-клієнт.

Створимо загальний файл налаштувань, план парку, в якому буде визначатися його наповнення різними видами машин, а також ознака конкретної фабрики, за допомогою якої він буде створюватися, наприклад:

factory = ru

carNum = 10

truckNum = 2

busNum = 4

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

Таким чином, використовуваний патерн Abstract Factory дозволяє нам у даному конкретному випадку – легко і швидко змінювати сімейство марок машин нашого парку і їх кількість, іншими словами – прозоро оновлювати наш автопарк будь-якими іншими машинами, не змінюючи жодного рядка у програмних файлах програми.

Вимоги.

1. Побудувати діаграму класів для даної задачі.

2. Побудувати діаграму взаємодій роботи програми.

3. Реалізувати це завдання на мові програмування С + +.

4. Провести тестування роботи програми при різних конфігураційних файлах.

 


Дата добавления: 2015-11-14; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Глава 9. Неловкие моменты| Общие настройки программы

mybiblioteka.su - 2015-2024 год. (0.006 сек.)