Шаблони за дизайн (софтуер)
от Уикипедия, свободната енциклопедия
(пренасочване от Шаблони за дизайн)
Шаблоните за дизайн (англ: Software design pattern) представляват концепция предназначена за разрешаване на често срещани проблеми в обектно-ориентираното програмиране. Тази концепция предлага стандартни решения за архитектурни и концептуални проблеми в компютърното програмиране.
Тук не става въпрос за конкренти алгоритми или част от програмен код. Шаблоните за дизайн са независими от програмния език. Те представляват архитектурни решения на вече познати и много често срещани проблеми в програмирането. Може да се каже, че шаблоните за дизайн представляват средство за прилагане на световния опит на програмисти и аналитици.
Съдържание |
[редактиране] Шаблони
[редактиране] Създаващи шаблони
| Наименование | Описание | В книгата Шаблони за дизайн (Design Patterns) | В Code Complete |
|---|---|---|---|
| Абстрактна Фабрика (Abstract Factory) | Предоставя интерфейс за създаване на семейства от обекти без да са посочени техните конкретни класове. | ||
| Метод Фабрика (Factory method) | Дефинира интерфейс за създаване на обекти, но оставя на подкласовете да решат от кои класове да направят инстанции. | ||
| Строител (Builder) | Разделя създаването на сложен обект от неговото представяне, така че един и същи процес да може да създава обекти с различно представяне. | ||
| Късна инициализация (Lazy initialization) | Отлагане във времето на създаването на обект, изчисляването на стойност или на някакъв друг отнемащ ресурси процес, до момента в който не е нужен. | ||
| Object pool | Предотвратява скъпо заделяне или освобождаване на ресурс чрез рециклиране на обекти с кратък живот. | ||
| Прототип (Prototype) | Определя прототипна инстанция на някакъв вид обект и създава нови обекти чрез копиране на прототипа. | ||
| Сек (Singleton) | Осигурява клас, който може да има само една единствена инстанция и предоставя глобален достъп до нея. |
[редактиране] Структурни шаблони
| Наименование | Описание | В книгата Шаблони за дизайн (Design Patterns) | В Code Complete |
|---|---|---|---|
| Адаптер (Adapter) | Конвертира интерфейса на даден клас към друг интерфейс, който е очакван от клиента. Адаптерът оставя класовете да работят заедно. Това е необходимо заради несъвместимастта им. | ||
| Мост (Bridge) | Отделя абстракцията от нейната имплементация, така че двете могат да бъдат променяни независимо. | ||
| Композиция (Composite) | |||
| Декоратор (Decorator) | Динамично добавя допълнителни отговорности на обект, като запазва интерфейса му. Декораторите предоставят гъвкава алтернатива на наследяването за разширяване на функционалността. | ||
| Фасада (Facade) | Предоставя уеднаквен интерфейс за редица интерфейси. Фасадата дефинира интерфейс от по-високо ниво, което прави по-лесна употребата на подсистемата. | ||
| Миниобект (Flyweight) | |||
| Пълномощно (Proxy) | Предоставя заместник на друг обект, за да се контролира достъпа до него. |
[редактиране] Поведенчески шаблони
| Наименование | Описание | В книгата Шаблони за дизайн (Design Patterns) | В Code Complete |
|---|---|---|---|
| Верига отговорности (Chain of Responsibility) | |||
| Команда (Command) | Капсулира дадена заявка във вид на обект. Това позволява свързването на клиента с различни заявки или опашки, както и поддръжка на функция за връщане на промените (undo). | ||
| Интерпретатор (Interpreter) | Даден език дефинира своята граманика, също така и интерпретатор, който използва граматиката, за да интерпретира изречения написани на този език. | ||
| Итератор (Iterator) | Предоставя начин за последователен достъп до елементите на обект, без да е нужна вътрешна информация за обекта. | ||
| Посредник (Mediator) | |||
| Спомен (Memento) | Без да нарушава капсулацията на даден обект, прихваща и изважда вътрешното му състояние с цел да бъде възвърнато това състояние в по-късен етап. | ||
| Празен обект (Null Object) | Проектиран е да действа като стойност по подразбиране на даден обект. | ||
| Наблюдател (Observer) | Дефинира зависимост "един към много" между обектите, така че ако един обект промени състоянието си, всички зависими от него обекти да бъдат известени и обновени автоматично. | ||
| Състояние (State) | Позволява на даден обект да променя поведението си при промяна на вътрешното му състояние. Изглежда все едно обектът е променил класа си. | ||
| Стратегия (Strategy) | Дефинира семейство от капсулирани алгоритми и ги прави взаемозаменими. Стратегията позволява промяна на алгоритмите, независимо от клиента, който ги използва. | ||
| Спецификация (Specification) | |||
| Шаблонен метод (Template method) | Дефинира скелет на алгоритъм в дадена операция, като оставя някои стъпки за подкласовете. Шаблонният метод позволява на подкласовете да предефинират някои стъпки на даден алгоритъм, без да променят структурата му. | ||
| Посетител (Visitor) | Посетителят предоставя възможност за дефиниране на нова операция, без да се променя класа на елемента върху който се извършва операцията. |
[редактиране] Архитектурни шаблони
[редактиране] Източници
- Шаблони за дизайн, Design Patterns - Ерик Гама, Ричард Хелм, Ралф Джонсън, 2005, издателство СофтПрес. ISBN 9546853526
- Английска, френска и руска версия на Уикипедия