Шаблони проєктування програмного забезпечення () — ефективні способи розв'язання задач проєктування програмного забезпечення. Шаблон не є закінченим зразком, який можна безпосередньо транслювати в програмний код. Об'єктно-орієнтований шаблон зазвичай є зразком вирішення проблеми і відображає відношення між класами та об'єктами, без вказівки на те, як буде зрештою реалізоване це відношення.
Історія
У 70-х роках двадцятого сторіччя архітектор Крістофер Александр () склав перелік шаблонів проєктування. В області архітектури ця ідея не отримала такого розвитку, котрого вона досягла пізніше в області розробки програмного забезпечення.
У 1987 році Кент Бек () і Вард Каннігем () узяли ідеї Крістофера Александра та розробили шаблони відповідно до розробки програмного забезпечення для розробки графічних оболонок мовою Smalltalk.
У 1988 році Еріх Ґамма () почав писати докторську роботу при цюрихському університеті про загальну переносимість цієї методики на розробку програм.
У 1989–1991 роках Джеймс Коплін () трудився над розробкою ідіом для програмування мовою C++ та опублікував у 1991 році книгу «Advanced C++ Idioms».
У цьому ж році Ерік Ґамма закінчує свою докторську роботу та переїздить до США, де у співробітництві з Річардом Гелмом (), Ральфом Джонсоном () та Джоном Вліссідсом () публікує книгу «Design Patterns — Elements of Reusable Object-Oriented Software». У цій книзі описані 23 шаблона проєктування. Також команда авторів цієї книги відома суспільству під назвою Банда чотирьох (). Саме ця книга послужила приводом до прориву методу шаблонів.
Типи шаблонів GOF
Основні шаблони Твірні шаблони Структурні шаблони Шаблони поведінки Шаблони паралельних операцій
Шаблони GRASP
Також існує інша група шаблонів проєктування, що отримала назву GRASP — General Responsibility Assignment Software Patterns. Опис цих шаблонів наводить Крег Ларман у своїй книзі. Applying UML and Patterns — Third Edition. . Шаблони GRASP формулюють найбільш базові принципи розподілу обов'язків між типами. До складу шаблонів GRASP входить 9 шаблонів:
Інформаційний експерт (Information Expert) Творець примірників класу (Creator) Низька зв'язаність (Low Coupling) Високе зчеплення (High Cohesion) Контролер (Controller) Поліморфізм (Polymorphism) Штучний (Pure Fabrication) Перенаправлення (Indirection) Стійкий до змін (Protected Variations)
Див. також Model-View-ViewModel CQRS Архітектурні шаблони програмного забезпечення Закон Деметри
Посилання
Джерела
101 Design Patterns Шаблони в процесі розробки Книга «Дизайн-патерни — просто, як двері»