
- •Вступление
- •Порождающие шаблоны проектирования
- •Использование
- •Перечень порождающих шаблонов
- •Абстрактная фабрика — Абстрактная фабрика
- •Цель
- •Плюсы
- •Минусы
- •Применимость
- •Структура
- •Пример реализации
- •Builder — Строитель
- •Цель
- •Плюсы
- •Применение
- •Структура
- •Пример реализации
- •Factory method — Фабричный метод
- •Цель
- •Структура
- •Плюсы
- •Минусы
- •Пример реализации
- •Lazy initialization — Ленивая инициализация
- •Достоинства
- •Недостатки
- •Пример реализации
- •Object pool — Объектный пул
- •Применение
- •Переполнение
- •Примеры
- •Ловушки
- •Пример реализации
- •Prototype — Прототип
- •Назначение
- •Применимость
- •Структура
- •Пример реализации
- •Singleton — Одиночка
- •Цель
- •Плюсы
- •Минусы
- •Применение
- •Структура
- •Пример реализации
- •Double checked locking - Блокировка с двойной проверкой
- •Пример реализации
- •Структурные шаблоны проектирования
- •Использование
- •Перечень структурных шаблонов
- •Front Controller — Входная точка
- •Пример
- •Структура
- •Adapter — Адаптер
- •Задача
- •Способ решения
- •Участники
- •Структура
- •Следствия
- •Реализация
- •Пример реализации
- •Bridge — Мост
- •Цель
- •Структура
- •Описание
- •Использование
- •Пример реализации
- •Composite — Компоновщик
- •Цель
- •Структура
- •Пример реализации
- •Decorator — Декоратор
- •Задача
- •Способ решения
- •Участники
- •Следствия
- •Реализация
- •Замечания и комментарии
- •Применение шаблона
- •Структура
- •Пример реализации
- •Facade — Фасад
- •Структура
- •Проблема
- •Решение
- •Особенности применения
- •Пример реализации
- •Flyweight — Приспособленец
- •Цель
- •Описание
- •Сруктура
- •Пример реализации
- •Proxy — Заместитель
- •Проблема
- •Решение
- •Структура
- •Преимущества
- •Недостатки
- •Сфера применения
- •Прокси и близкие к нему шаблоны
- •Пример реализации
- •Поведенческие шаблоны проектирования
- •Использование
- •Перечень поведенческий шаблонов
- •Chain of responsibility — Цепочка обязанностей
- •Применение
- •Сруктура
- •Пример реализации
- •Command — Команда
- •Цель
- •Описание
- •Сруктура
- •Пример реализации
- •Interpreter — Интерпретатор
- •Проблема
- •Решение
- •Преимущества
- •Недостатки
- •Пример
- •Структура
- •Пример реализации
- •Iterator — Итератор
- •Структура
- •Пример реализации
- •Mediator — Посредник
- •Проблема
- •Решение
- •Преимущества
- •Структура
- •Описание
- •Пример реализации
- •Memento — Хранитель
- •Применение
- •Структура
- •Описание
- •Пример реализации
- •Observer — Наблюдатель
- •Назначение
- •Структура
- •Область применения
- •Пример реализации
- •State — Состояние
- •Структура
- •Пример реализации
- •Strategy — Стратегия
- •Задача
- •Мотивы
- •Способ решения
- •Участники
- •Следствия
- •Реализация
- •Полезные сведения
- •Использование
- •Сруктура
- •Пример реализации
- •Template — Шаблонный метод
- •Применимость
- •Участники
- •Сруктура
- •Пример реализации
- •Visitor — Посетитель
- •Структура
- •Описание средствами псевдокода
- •Проблема
- •Решение
- •Рекомендации
- •Преимущества
- •Недостатки
- •Пример реализации
- •Null Object (Null object)
- •Мотивация
- •Описание
- •Структура
- •Реализация
- •Пример
- •Связь с другими патернами
- •Критика и комментарии
- •Пример реализации
- •Слуга (Servant)
- •Описание
- •Структура
- •Реализаци
- •Пример реализации
- •Specification (Specification)
- •Структура
- •Пример реализации
- •Пример использования
- •Simple Policy
- •Обзор
- •Простыми словами
- •Сруктура
- •Пример реализации
- •Single-serving visitor
- •Применение
- •Пример использования
- •Плюси
- •Минусы
- •Пример реализации
- •Об авторе
Design Patterns
with examples in C#
Author D
Паттерны
проектирования
с примерами на языке C#
Автор D
2012
2
Оглавление |
|
Вступление................................................................................................................... |
9 |
Порождающие шаблоны проектирования .............................................................. |
11 |
Использование ................................................................................................................................................. |
11 |
Перечень порождающих шаблонов............................................................................................................... |
11 |
Абстрактная фабрика — Абстрактная фабрика....................................................................................... |
13 |
Цель................................................................................................................................................................... |
13 |
Плюсы................................................................................................................................................................ |
13 |
Минусы ............................................................................................................................................................. |
13 |
Применимость.................................................................................................................................................. |
13 |
Структура .......................................................................................................................................................... |
14 |
Пример реализации......................................................................................................................................... |
14 |
Builder — Строитель................................................................................................................................. |
17 |
Цель................................................................................................................................................................... |
17 |
Плюсы................................................................................................................................................................ |
17 |
Применение ..................................................................................................................................................... |
17 |
Структура .......................................................................................................................................................... |
17 |
Пример реализации......................................................................................................................................... |
18 |
Factory method — Фабричный метод ...................................................................................................... |
20 |
Цель................................................................................................................................................................... |
20 |
Структура .......................................................................................................................................................... |
20 |
Плюсы................................................................................................................................................................ |
21 |
Минусы ............................................................................................................................................................. |
21 |
Пример реализации......................................................................................................................................... |
22 |
Lazy initialization — Ленивая инициализация.......................................................................................... |
23 |
Достоинства...................................................................................................................................................... |
23 |
Недостатки........................................................................................................................................................ |
23 |
Пример реализации......................................................................................................................................... |
23 |
Object pool — Объектный пул.................................................................................................................. |
25 |
Применение ..................................................................................................................................................... |
25 |
Переполнение .................................................................................................................................................. |
25 |
Примеры ........................................................................................................................................................... |
25 |
Ловушки ............................................................................................................................................................ |
25 |
Пример реализации......................................................................................................................................... |
25 |
|
3 |
Prototype — Прототип ............................................................................................................................. |
31 |
Назначение ....................................................................................................................................................... |
31 |
Применимость.................................................................................................................................................. |
31 |
Структура .......................................................................................................................................................... |
31 |
Пример реализации......................................................................................................................................... |
32 |
Singleton — Одиночка.............................................................................................................................. |
34 |
Цель................................................................................................................................................................... |
34 |
Плюсы................................................................................................................................................................ |
34 |
Минусы ............................................................................................................................................................. |
34 |
Применение ..................................................................................................................................................... |
34 |
Структура .......................................................................................................................................................... |
34 |
Пример реализации......................................................................................................................................... |
34 |
Double checked locking - Блокировка с двойной проверкой.................................................................... |
37 |
Пример реализации......................................................................................................................................... |
37 |
Структурные шаблоны проектирования .................................................................. |
38 |
Использование ................................................................................................................................................. |
38 |
Перечень структурных шаблонов................................................................................................................... |
38 |
Front Controller — Входная точка ............................................................................................................ |
40 |
Пример.............................................................................................................................................................. |
40 |
Структура .......................................................................................................................................................... |
40 |
Adapter — Адаптер .................................................................................................................................. |
41 |
Задача................................................................................................................................................................ |
41 |
Способ решения ............................................................................................................................................... |
41 |
Участники.......................................................................................................................................................... |
41 |
Структура .......................................................................................................................................................... |
41 |
Следствия.......................................................................................................................................................... |
41 |
Реализация ....................................................................................................................................................... |
41 |
Пример реализации......................................................................................................................................... |
42 |
Bridge — Мост.......................................................................................................................................... |
43 |
Цель................................................................................................................................................................... |
43 |
Структура .......................................................................................................................................................... |
43 |
Описание........................................................................................................................................................... |
43 |
Использование ................................................................................................................................................. |
44 |
Пример реализации......................................................................................................................................... |
44 |
Composite — Компоновщик .................................................................................................................... |
47 |
|
4 |
Цель................................................................................................................................................................... |
47 |
Структура .......................................................................................................................................................... |
47 |
Пример реализации......................................................................................................................................... |
47 |
Decorator — Декоратор ........................................................................................................................... |
50 |
Задача................................................................................................................................................................ |
50 |
Способ решения ............................................................................................................................................... |
50 |
Участники.......................................................................................................................................................... |
50 |
Следствия.......................................................................................................................................................... |
50 |
Реализация ....................................................................................................................................................... |
50 |
Замечания и комментарии.............................................................................................................................. |
50 |
Применение шаблона ..................................................................................................................................... |
51 |
Структура .......................................................................................................................................................... |
51 |
Пример реализации......................................................................................................................................... |
52 |
Facade — Фасад ....................................................................................................................................... |
54 |
Структура .......................................................................................................................................................... |
54 |
Проблема.......................................................................................................................................................... |
54 |
Решение ............................................................................................................................................................ |
54 |
Особенности применения............................................................................................................................... |
54 |
Пример реализации......................................................................................................................................... |
55 |
Flyweight — Приспособленец .................................................................................................................. |
57 |
Цель................................................................................................................................................................... |
57 |
Описание........................................................................................................................................................... |
57 |
Сруктура ............................................................................................................................................................ |
57 |
Пример реализации......................................................................................................................................... |
57 |
Proxy — Заместитель ............................................................................................................................... |
60 |
Проблема.......................................................................................................................................................... |
60 |
Решение ............................................................................................................................................................ |
60 |
Структура .......................................................................................................................................................... |
60 |
Преимущества .................................................................................................................................................. |
61 |
Недостатки........................................................................................................................................................ |
61 |
Сфера применения .......................................................................................................................................... |
61 |
Прокси и близкие к нему шаблоны................................................................................................................ |
61 |
Пример реализации......................................................................................................................................... |
61 |
Поведенческие шаблоны проектирования.............................................................. |
64 |
Использование ................................................................................................................................................. |
64 |
|
5 |
Перечень поведенческий шаблонов.............................................................................................................. |
64 |
Chain of responsibility — Цепочка обязанностей...................................................................................... |
65 |
Применение ..................................................................................................................................................... |
65 |
Сруктура ............................................................................................................................................................ |
65 |
Пример реализации......................................................................................................................................... |
65 |
Command — Команда.............................................................................................................................. |
68 |
Цель................................................................................................................................................................... |
68 |
Описание........................................................................................................................................................... |
68 |
Сруктура ............................................................................................................................................................ |
68 |
Пример реализации......................................................................................................................................... |
68 |
Interpreter — Интерпретатор................................................................................................................... |
72 |
Проблема.......................................................................................................................................................... |
72 |
Решение ............................................................................................................................................................ |
72 |
Преимущества .................................................................................................................................................. |
72 |
Недостатки........................................................................................................................................................ |
72 |
Пример.............................................................................................................................................................. |
72 |
Структура .......................................................................................................................................................... |
72 |
Пример реализации......................................................................................................................................... |
72 |
Iterator — Итератор ................................................................................................................................. |
75 |
Структура .......................................................................................................................................................... |
76 |
Пример реализации......................................................................................................................................... |
76 |
Mediator — Посредник............................................................................................................................ |
79 |
Проблема.......................................................................................................................................................... |
79 |
Решение ............................................................................................................................................................ |
79 |
Преимущества .................................................................................................................................................. |
79 |
Структура .......................................................................................................................................................... |
79 |
Описание........................................................................................................................................................... |
79 |
Пример реализации......................................................................................................................................... |
79 |
Memento — Хранитель............................................................................................................................ |
82 |
Применение ..................................................................................................................................................... |
82 |
Структура .......................................................................................................................................................... |
82 |
Описание........................................................................................................................................................... |
83 |
Пример реализации......................................................................................................................................... |
83 |
Observer — Наблюдатель ........................................................................................................................ |
89 |
Назначение ....................................................................................................................................................... |
89 |
|
6 |
Структура .......................................................................................................................................................... |
89 |
Область применения ....................................................................................................................................... |
89 |
Пример реализации......................................................................................................................................... |
90 |
State — Состояние ................................................................................................................................... |
92 |
Структура .......................................................................................................................................................... |
92 |
Пример реализации......................................................................................................................................... |
92 |
Strategy — Стратегия................................................................................................................................ |
99 |
Задача................................................................................................................................................................ |
99 |
Мотивы ............................................................................................................................................................. |
99 |
Способ решения ............................................................................................................................................... |
99 |
Участники.......................................................................................................................................................... |
99 |
Следствия.......................................................................................................................................................... |
99 |
Реализация ....................................................................................................................................................... |
99 |
Полезные сведения ....................................................................................................................................... |
100 |
Использование ............................................................................................................................................... |
100 |
Сруктура .......................................................................................................................................................... |
100 |
Пример реализации....................................................................................................................................... |
100 |
Template — Шаблонный метод ............................................................................................................. |
103 |
Применимость................................................................................................................................................ |
103 |
Участники........................................................................................................................................................ |
103 |
Сруктура .......................................................................................................................................................... |
103 |
Пример реализации....................................................................................................................................... |
104 |
Visitor — Посетитель.............................................................................................................................. |
106 |
Структура ........................................................................................................................................................ |
106 |
Описание средствами псевдокода............................................................................................................... |
106 |
Проблема........................................................................................................................................................ |
107 |
Решение .......................................................................................................................................................... |
107 |
Рекомендации................................................................................................................................................ |
107 |
Преимущества ................................................................................................................................................ |
107 |
Недостатки...................................................................................................................................................... |
108 |
Пример реализации....................................................................................................................................... |
108 |
Null Object (Null object) .......................................................................................................................... |
115 |
Мотивация ...................................................................................................................................................... |
115 |
Описание......................................................................................................................................................... |
115 |
Структура ........................................................................................................................................................ |
115 |
|
7 |
Реализация ..................................................................................................................................................... |
116 |
Пример............................................................................................................................................................ |
116 |
Связь с другими патернами .......................................................................................................................... |
116 |
Критика и комментарии ................................................................................................................................ |
117 |
Пример реализации....................................................................................................................................... |
117 |
Слуга (Servant) ....................................................................................................................................... |
118 |
Описание......................................................................................................................................................... |
118 |
Структура ........................................................................................................................................................ |
118 |
Реализаци ....................................................................................................................................................... |
119 |
Пример реализации....................................................................................................................................... |
119 |
Specification (Specification)..................................................................................................................... |
121 |
Структура ........................................................................................................................................................ |
121 |
Пример реализации....................................................................................................................................... |
121 |
Пример использования ................................................................................................................................. |
122 |
Simple Policy........................................................................................................................................... |
124 |
Обзор............................................................................................................................................................... |
124 |
Простыми словами ........................................................................................................................................ |
125 |
Сруктура .......................................................................................................................................................... |
126 |
Пример реализации....................................................................................................................................... |
128 |
Single-serving visitor ............................................................................................................................... |
138 |
Применение ................................................................................................................................................... |
138 |
Пример использования ................................................................................................................................. |
138 |
Плюси .............................................................................................................................................................. |
138 |
Минусы ........................................................................................................................................................... |
138 |
Пример реализации....................................................................................................................................... |
138 |
Об авторе................................................................................................................. |
140 |
8
Вступление
Представляю вам мануал по паттернам проектирования с примерами на языке C#. Основной материал взят c Википедии http://ru.wikipedia.org/wiki/Design_Patterns .
Целью создания данного мануала послужила потребность в кратком справочнике с ясными примерами на языке C# основных паттернов проектирования.
Связаться со мной можно на моём вебсайте http://go-d.org или по мейлу mail.go.d.org@gmail.com .
Если вам понравился мануал, и вы хотите отблагодарить, просто отправьте https://w.qiwi.com яйцо мне на емейл.
9
10