Similar presentations:
Шаблоны проектирования
1.
О Н Л А Й Н - О Б РА З О В А Н И Е2.
Меня хорошо слышно&& видно?
Напишите в чат, если есть проблемы!
Ставьте + если все хорошо
3. Шаблоны проектирования
Александр Пряхин4. Цель занятия
• Обсудить историю возникновения паттернов• Рассмотреть подробно несколько примеров
• Поговорить про антипаттерныы
5. История развития паттернов
6. Первые паттерны
7. Паттерны
• Архитектурные• Дизайн
• Идиомы
8. GoF
9. Паттерны проектирования
10. Для чего нужны паттерны
• Проверенные решения• Стандартизация кода
• Общий словарь (коммуникация)
11. Для чего не нужны паттерны
• Паттерны – не серебряная пуля• Не стоит пытаться втиснуть паттерны в код
• Ненужное усложнение
12. Паттерны
13. GRASP
• Информационный эксперт• Low coupling and high cohesion
• Устойчивость к изменениям
14. Архитектура
15. Куда поместить логику?
16. Толстый клиент
+ не так страшен обрывсвязи с сервером
- высокие требования к
производительности и
проблемы с
кроссплатформенностью
17. Тонкий клиент
+ клиент простой, легкийи нетребовательный к
ресурсам
- высокие требования к
серверу и сети из-за
нагрузок
18. Клиент-сервер трехзвенный
19. Преимущества
20. MVC
21. MVC: active vs passive
PassiveКонтроллер становится раздутым и монолитным монстром
Завязка на фреймворк → ухудшение тестируемости и переиспользования
кода
Active
Логика в Модели может быть переиспользуема и лучше тестируется
Контроллер просто связывает Модель с Представлением, не завязывая
логику на фреймворк
22. HMVC
23. MVVM
24. PageController
Единая точка доступа
Характерная часть реализации MVC
25. Классификация (по GoF)
• Порождающие• Структурные
• Поведенческие
https://github.com/kamranahmedse/design-patterns-for-humans/blob/master/README.md
26. Строитель
27. Синглтон
28. Фабричный метод
29. Адаптер
30. Шаблонный метод
31. И еще немного
• Итератор• Стратегия
• Наблюдатель
• ActiveRecord vs Repository
32. Антипаттерны
33. Copy and Paste Programming
Решение:• Отдельный репозиторий и использование его в качестве
внешних зависимостей
• Вынесение кода в библиотеки, утилиты
34. Spaghetti code
Решение• Статические анализаторы
• Код-ревью
• Рефакторинг
35. God object
Решение• Использовать принципы разработки SRP и другие
• Рефакторинг
36. И еще
Магические числа
Hardcoding
Сохранение части кода на будущее
Изобретение колеса
37. Александр Пряхин
Email: [email protected]Telegram: @alex_kex