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

Учасники паттерна. 1. AbstractClass – абстрактний клас:

Читайте также:
  1. Відносини учасників паттерна.
  2. Відносини учасників паттерна.
  3. Відносини учасників паттерна.
  4. Відносини учасників паттерна.
  5. Вості, учасники якого зберігають власність на засоби виробництва, але
  6. Сучасники відзначають: найбільшою складністю у Фіхте є те, що він залишає дух
  7. Учасники партерна.
  8. Учасники паттерна.
  9. Учасники паттерна.
  10. Учасники паттерна.
  11. Учасники паттерна.
  12. Учасники паттерна.

1. AbstractClass – абстрактний клас:

- визначає абстрактні примітивні операції, заборонені в конкретних підкласах для реалізації кроків алгоритму;

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

2. ConcreteClass – конкретний клас:

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

Відносини учасників паттерна. Весь повторно використовуваний код визначається в базових класах каркаса, потрібну поведінку системи клієнти визначають в утворюваних похідних класах. ConcreteClass передбачає, що інваріантні кроки алгоритму будуть виконані в AbstractClass.

Особливості програмної реалізації. Для програмної реалізації паттерна Шаблонний метод необхідно:

- дослідити алгоритм і вирішити, які кроки є стандартними, а які повинні визначатися підкласами;

- створити новий абстрактний базовий клас;

- помістити в новий клас основу алгоритму (шаблонний метод) і визначити стандартні кроки;

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

- викликати метод з Шаблонного методу;

- створити підкласи від нового абстрактного базового класу і реалізувати в них «замінні» методи.

Результати використання. Шаблонні методи –один з фундаментальних прийомів повторного використання коду. Вони особливо важливі в бібліотеках класів, оскільки надають можливість винести загальну поведінку у бібліотечні класи.

Шаблонні методи призводять до інвертованої структури коду, яку іноді називають принципом Голлівуду, маючи на увазі часто вживану в цій кіноімперії фразу «Не телефонуйте нам, ми самі зателефонуємо» [14]. В даному випадку це означає, що батьківський клас викликає операції підкласу, а не навпаки.

Шаблонні методи викликають операції наступних видів:

- конкретні операції (або класу ConcreteClass, або з класів клієнта);

- конкретні операції з класу AbstractClass (тобто операції, корисні всім підкласами);

- примітивні операції (тобто абстрактні операції);

- фабричні методи (див. паттерн фабричний метод);

- операції-зачіпки (hook operations), які реалізують поведінку за замовчуванням, яка може бути розширена в підкласах. Часто така операція за замовчуванням нічого не робить.

Особливості паттерна Template Method:

- Template Method використовує спадкування для модифікації частини алгоритму. Стратегія використовує делегування для модифікації всього алгоритму;

- Стратегія змінює логіку окремих об’єктів. Template Method змінює логіку всього класу;

- Фабричні методи часто викликаються з шаблонних методів.

Контрольні запитання

1. Дайте визначення паттерна Ланцюжок відповідальностей.

2. Перерахуйте учасників паттерну Ланцюжок відповідальностей.

3. Дайте визначення паттерна Ітератор.

4. Наведіть слабкі та сильні сторони використання паттерна Ітератор.

5. Дайте визначення паттерна Команда.

6. Наведіть проблемну предметну область для застосування паттерна Команда.

7. Дайте визначення паттерна Спостерігач.

8. Перерахуйте учасників паттерну Спостерігач.

9. Дайте визначення паттерна Посередник.

10. Наведіть способи програмної реалізації паттерна Посередник.

11. Дайте визначення паттерна Зберігач.

12. Перерахуйте учасників паттерну Зберігач

13. Дайте визначення паттерна Стратегія.

14. Наведіть слабкі та сильні сторони використання паттерна Стратегія.

15. Дайте визначення паттерна Стан.

16. Наведіть предметні області для застосування паттерна Стан.

17. Дайте визначення паттерна Шаблонний метод.

18. Перерахуйте учасників паттерну Шаблонний метод.

 


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 сек.)