Шаблоны проектирования

Содержание

Слайд 2

Меня хорошо слышно && видно?

Меня хорошо слышно && видно?

Слайд 3

Шаблоны проектирования Александр Пряхин

Шаблоны проектирования

Александр Пряхин

Слайд 4

Цель занятия Обсудить историю возникновения паттернов Рассмотреть подробно несколько примеров Поговорить про антипаттерныы

Цель занятия

Обсудить историю возникновения паттернов
Рассмотреть подробно несколько примеров
Поговорить про антипаттерныы

Слайд 5

История развития паттернов 01

История развития паттернов

01

Слайд 6

Первые паттерны

Первые паттерны

Слайд 7

Паттерны Архитектурные Дизайн Идиомы

Паттерны

Архитектурные
Дизайн
Идиомы

Слайд 8

GoF

GoF

Слайд 9

Паттерны проектирования

Паттерны проектирования

Слайд 10

Для чего нужны паттерны Проверенные решения Стандартизация кода Общий словарь (коммуникация)

Для чего нужны паттерны

Проверенные решения
Стандартизация кода
Общий словарь (коммуникация)

Слайд 11

Для чего не нужны паттерны Паттерны – не серебряная пуля Не

Для чего не нужны паттерны

Паттерны – не серебряная пуля
Не стоит пытаться

втиснуть паттерны в код
Ненужное усложнение
Слайд 12

Паттерны 02

Паттерны

02

Слайд 13

GRASP Информационный эксперт Low coupling and high cohesion Устойчивость к изменениям

GRASP

Информационный эксперт
Low coupling and high cohesion
Устойчивость к изменениям

Слайд 14

Архитектура

Архитектура

Слайд 15

Куда поместить логику?

Куда поместить логику?

Слайд 16

Толстый клиент + не так страшен обрыв связи с сервером -

Толстый клиент

+ не так страшен обрыв связи с сервером
- высокие требования

к производительности и проблемы с кроссплатформенностью
Слайд 17

Тонкий клиент + клиент простой, легкий и нетребовательный к ресурсам -

Тонкий клиент

+ клиент простой, легкий и нетребовательный к ресурсам
- высокие требования

к серверу и сети из-за нагрузок
Слайд 18

Клиент-сервер трехзвенный

Клиент-сервер трехзвенный

Слайд 19

Преимущества

Преимущества

Слайд 20

MVC

MVC

Слайд 21

MVC: active vs passive Passive Контроллер становится раздутым и монолитным монстром

MVC: active vs passive

Passive
Контроллер становится раздутым и монолитным монстром Завязка на фреймворк

→ ухудшение тестируемости и переиспользования кода

Active
Логика в Модели может быть переиспользуема и лучше тестируется Контроллер просто связывает Модель с Представлением, не завязывая логику на фреймворк

Слайд 22

HMVC

HMVC

Слайд 23

MVVM

MVVM

Слайд 24

PageController Единая точка доступа Характерная часть реализации MVC

PageController

Единая точка доступа
Характерная часть реализации MVC

Слайд 25

Классификация (по GoF) Порождающие Структурные Поведенческие https://github.com/kamranahmedse/design-patterns-for-humans/blob/master/README.md

Классификация (по GoF)

Порождающие
Структурные
Поведенческие

https://github.com/kamranahmedse/design-patterns-for-humans/blob/master/README.md

Слайд 26

Строитель

Строитель

Слайд 27

Синглтон

Синглтон

Слайд 28

Фабричный метод

Фабричный метод

Слайд 29

Адаптер

Адаптер

Слайд 30

Шаблонный метод

Шаблонный метод

Слайд 31

И еще немного Итератор Стратегия Наблюдатель ActiveRecord vs Repository

И еще немного

Итератор
Стратегия
Наблюдатель
ActiveRecord vs Repository

Слайд 32

Антипаттерны 03

Антипаттерны

03

Слайд 33

Copy and Paste Programming Решение: Отдельный репозиторий и использование его в

Copy and Paste Programming

Решение:
Отдельный репозиторий и использование его в качестве внешних

зависимостей
Вынесение кода в библиотеки, утилиты
Слайд 34

Spaghetti code Решение Статические анализаторы Код-ревью Рефакторинг

Spaghetti code

Решение
Статические анализаторы
Код-ревью
Рефакторинг

Слайд 35

God object Решение Использовать принципы разработки SRP и другие Рефакторинг

God object

Решение
Использовать принципы разработки SRP и другие
Рефакторинг

Слайд 36

И еще Магические числа Hardcoding Сохранение части кода на будущее Изобретение колеса

И еще

Магические числа
Hardcoding
Сохранение части кода на будущее
Изобретение колеса