Об’єктно-орієнтоване проектування програмних систем. Послідовність розробки програмного продукту на основі об’єктноорієнтованого підходу, страница 11

Характеристика

Коментарій

Ідентифікатор

Усі шаблони мають унікальний ідентифікатор

Призначення

Призначення даного шаблона 

Задача

Задача, яку шаблон дозволяє вирішити

Спосіб рішення

Спосіб, пропонований у шаблоні для рішення задачі в тім контексті, де цей шаблон був знайдений

Учасники 

Сутності, що приймають участь у рішенні задачі

Наслідки

Наслідки від використання шаблона як результат дій, виконуваних у шаблоні

Реалізація

Можливий варіант реалізації шаблона. Зауваження. Реалізація є лише конкретним втіленням загальної ідеї шаблона і не повинна розумітися як власне сам шаблон

Переваги застосування шаблонів проектування наступні:

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

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

-  Шаблони проектування, вивчені належним чином, істотно допомагають загальному розумінню основних принципів об’єктноорієнтованого проектування. 

В якості прикладу шаблонів проектування розглянемо шаблони Facade та Adapter.

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

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

Основні характеристики шаблона Facade: 

Призначення. Спростити роботу з існуючою системою, визначивши власний   інтерфейс звертання до неї.

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

Спосіб. Шаблон Facade надає клієнтам новий інтерфейс для взаємодії  рішення  з вже існуючою системою.

Учасники.    Клієнту надається спеціалізований інтерфейс, що  спрощує роботу із системою.

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

Реалізація.Визначення нового класу (чи класів) з необхідним інтерфейсом У своїй роботі новий клас повинен спиратися на функціональні можливості існуючої системи.

Шаблон Adapter. Застосування шаблона Adapter дозволяє організувати спільну роботу класів з несумісними інтерфейсами. Іншими словами, даний шаблон припускає створення нового інтерфейсу для необхідного об'єкта, що ми не можемо використовувати через його невідповідний інтерфейс.

Розглянемо приклад застосування шаблона Adapter. На рис. 6.1 наведено ієрархію класів графічної системи. Як видно з діаграми, всі класи містять набір віртуальних методів display(), fill() та undisplay(). Нехай існує бібліотечний клас XXCircle, що містить набір методів, який співпадає за функціональністю, але відрізняється з ідентифікаторами. Задача програміста полягає в включенні останнього класу до загальної ієрархії та забезпечити правильність поліморфних викликів. Вирішення наведеної проблеми можливе за рахунок використання   шаблона Adapter. На його основі слід розробити класпосередник, що відповідає всім вимогам загальної ієрархії і агрегує клас XXCircle з забезпеченням доступу до його методів по стандартному протоколу