Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Design Patterns by D.pdf
Скачиваний:
25
Добавлен:
19.02.2016
Размер:
2.57 Mб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]