Page 39 - 4190
P. 39
патернів можна вести обговорення з колегами, нагадувати патерни в
документації, в тонкощах уявляти дизайн системи. Знаходження хо-
роших імен було однією зі складних задач при створенні каталогу.
2. Задача. Описано коли можна застосовувати патерн. Необхідно
сформулювати задачу і її контекст. Може описуватися конкретна
проблема проектування, наприклад, спосіб представлення алгоритмів
у вигляді об’єктів. Інколи відмічається, які структури класів або
об’єктів свідчать про негнучкий дизайн. Також може включатися пе-
релік умов, за виконання яких є сенс застосовувати данний паттерн.
3. Рішення. Описано елементи дизайну, відношення між ними,
функції кожного елементу. Конкретний дизайн або реалізація як шаб-
лону, що застосовується в різноманітних ситуаціях. Просто дається
абстрактний опис задачі проектування, як вона може бути вирішена
за допомогою деякого досить узагальненого поєднання елементів (у
даному випадку класів і об’єктів).
4. Результати. Наслідок застосування патерна і різноманітні
компроміси. Хоча при описі проектних рішень про наслідки часто не
згадується, знати про них необхідно, щоб можна було вибрати між
різними варіантами та оцінити переваги і недоліки даного патерна.
Тут мова йде про вибір мови і реалізації.
Оскільки в об’єктно-орієнтованому проектуванні повторне вико-
ристання часто є важливим фактором, то до результатів слід відноси-
ти і вплив на ступінь гнучкості, розширення і перенесення системи.
Перерахунок усіх наслідків допоможе програмісту зрозуміти і оціни-
ти їх роль.
Отже, те, що один сприймає як патерн, для іншого просто будіве-
льний блок. В випадку розглядаються патерни на певному рівні абс-
тракції. Патерни проектування - це не теж саме, що пов’язані списки,
які можна реалізовувати у вигляді класів і повторно використовувати
без будь-яких модифікацій. Але це і не складні предметно-
орієнтовані рішення для певного додатку або підсистеми. У даному
випадку під патернами проектування розуміють опис взаємодії
об’єктів і класів, адаптованих для рішення загальної задачі проекту-
вання в конкретному контексті.
Патерн проектування іменує, абстрагує та ідентифікує ключові
аспекти структури загального рішення, які і дозволяють застосовува-
ти його для створення повторного дизайну, що використовують. Він
виокремлює класи та екземпляри їх роль і відношення, а також функ-
ції. При описі кожного патерна увага акцентується на конкретній за-
39