![](https://habrastorage.org/getpro/habr/post_images/66e/310/342/66e31034214f6fa11f949b24325ae995.jpg)
Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.
Под катом — много картинок.
Условные обозначения
Отношения между классами
— агрегация (aggregation) — описывает связь «часть»–«целое», в котором «часть» может существовать отдельно от «целого». Ромб указывается со стороны «целого».
— композиция (composition) — подвид агрегации, в которой «части» не могут существовать отдельно от «целого».
— зависимость (dependency) — изменение в одной сущности (независимой) может влиять на состояние или поведение другой сущности (зависимой). Со стороны стрелки указывается независимая сущность.
— обобщение (generalization) — отношение наследования или реализации интерфейса. Со стороны стрелки находится суперкласс или интерфейс.
Виды паттернов
— поведенческие (behavioral);
— порождающие (creational);
— структурные (structural).
Список шаблонов
![](https://habrastorage.org/getpro/habr/post_images/349/055/ba9/349055ba96e21b43c7d3e506d4920bc8.jpg)
Хранитель (memento)
![](https://habrastorage.org/getpro/habr/post_images/c08/bf1/7ee/c08bf17ee80d42272441cafbcce1a2dd.jpg)
Цепочка обязанностей (chain of responsibility)
![](https://habrastorage.org/getpro/habr/post_images/ec8/3ef/362/ec83ef3621e0dbe56bed96e3c272e3ff.jpg)
Наблюдатель (observer)
![](https://habrastorage.org/getpro/habr/post_images/cad/355/d48/cad355d48e3b9a2debcad55bc6504beb.jpg)
Команда (command)
![](https://habrastorage.org/getpro/habr/post_images/0b9/09b/8fb/0b909b8fbe9fa7d4c02225c2004cb126.jpg)
Состояние (state)
![](https://habrastorage.org/getpro/habr/post_images/4fb/72c/31e/4fb72c31e718d89f6cefb97af767b6ee.jpg)
Интерпретатор (interpreter)
![](https://habrastorage.org/getpro/habr/post_images/9f8/d89/5ce/9f8d895cef478a88a9c990802d733f22.jpg)
Стратегия (strategy)
![](https://habrastorage.org/getpro/habr/post_images/8d8/303/cdb/8d8303cdbc70de33f376454c2eb6934a.jpg)
Итератор (iterator)
![](https://habrastorage.org/getpro/habr/post_images/af1/992/b68/af1992b6809a68dd7743f8e7756ad635.jpg)
Шаблонный метод (template method)
![](https://habrastorage.org/getpro/habr/post_images/2d6/a9d/443/2d6a9d443800486ed3ba432da9954df8.jpg)
Посредник (mediator)
![](https://habrastorage.org/getpro/habr/post_images/9c4/8eb/8ab/9c48eb8ab34d448fc5886c5c965de090.jpg)
Посетитель (visitor)
![](https://habrastorage.org/getpro/habr/post_images/ecb/a77/f17/ecba77f1762c4e96b5b468810bf9edb0.jpg)
Адаптер (adapter)
![](https://habrastorage.org/getpro/habr/post_images/4ae/931/8d8/4ae9318d8b986cf4efada94b9de54761.jpg)
Прокси (proxy)
![](https://habrastorage.org/getpro/habr/post_images/3c3/c0f/87d/3c3c0f87d7e200b0b383223e547c7f4e.jpg)
Мост (bridge)
![](https://habrastorage.org/getpro/habr/post_images/a37/91c/32c/a3791c32c219678bc6549b012747497d.jpg)
Абстрактная фабрика (abstract factory)
![](https://habrastorage.org/getpro/habr/post_images/710/505/d1a/710505d1aff5667c97fcb06215faee31.jpg)
Компоновщик (composite)
![](https://habrastorage.org/getpro/habr/post_images/3c0/75e/525/3c075e525a7ed4aa2f13495a3289e348.jpg)
Строитель (builder)
![](https://habrastorage.org/getpro/habr/post_images/16b/2fe/a7f/16b2fea7f7f4dcd14fe2ad0b0bb9bf84.jpg)
Декоратор (decorator)
![](https://habrastorage.org/getpro/habr/post_images/15c/27c/26e/15c27c26e08f1936e3f73089ecac3d05.jpg)
Фабричный метод (factory method)
![](https://habrastorage.org/getpro/habr/post_images/a79/c7d/d5e/a79c7dd5eaba210f19e194f2b97434d0.jpg)
Фасад (facade)
![](https://habrastorage.org/getpro/habr/post_images/049/2df/3bf/0492df3bf1fc55c520276c618815298a.jpg)
Прототип (prototype)
![](https://habrastorage.org/getpro/habr/post_images/a9d/715/4a9/a9d7154a9b7e321a6330ab0c0337c061.jpg)
Приспособленец (flyweight)
![](https://habrastorage.org/getpro/habr/post_images/120/481/32c/12048132c537c1ad342f3fe17647de0d.jpg)
Одиночка (singleton)
![](https://habrastorage.org/getpro/habr/post_images/f80/871/aaf/f80871aaf46238adcc0cd2468f19a4c5.jpg)
Файлы
Upd. оригинальный pdf и изображения (1, 2).
P.S. По запросу «шаблоны проектирования» 636 топиков, а хаба нет; а по «bitcoin» — 278 топиков и хаб есть. Прошу восстановить справедливость!
Опросы
Only registered users can participate in poll. Log in, please.
Стоит ли продолжать переводить шпаргалки?
96.05% Да4494
3.95% Нет185
4679 users voted. 407 users abstained.
Only registered users can participate in poll. Log in, please.
Нужен ли хаб для паттернов?
86.17% Нужен3845
13.83% Не нужен617
4462 users voted. 601 users abstained.