Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура
Популярность Python продолжает расти, а значит, проекты, созданные на этом языке программирования, становятся все масштабнее и сложнее. Многие разработчики проявляют интерес к высокоуровневым паттернам проектирования, таким как чистая и событийно-управляемая архитектура и паттерны предметно-ориентированного проектирования (DDD). Но их адаптация под Python не всегда очевидна.
Гарри Персиваль и Боб Грегори познакомят вас с проверенными паттернами, чтобы каждый питонист мог управлять сложностью приложений и получать максимальную отдачу от тестов. Теория подкреплена примерами на чистом Python, лишенном синтаксической избыточности Java и C#.
В этой книге:
- «Инверсия зависимостей» и ее связи с портами и адаптерами (гексагональная/чистая архитектура).
- Различия между паттернами «Сущность», «Объект-значение» и «Агрегат» в рамках DDD.
- Паттерны «Репозиторий» и UoW, обеспечивающие постоянство хранения данных.
- Паттерны «Событие», «Команда» и «Шина сообщений».
- Разделение ответственности на команды и запросы (CQRS).
- Событийно-управляемая архитектура и реактивные расширения.
«Книга, которую сообщество ждало очень долго! Современная архитектура приложений на Python выглядит именно так, Гарри и Боб показывают, насколько элегантно может реализовываться принцип инверсии зависимостей в “гладком" динамичном языке программирования».
- Брэндон Роудс, автор «Руководства по паттернам проектирования Python»
«Книг о том, как писать удобные в сопровождении и крупномасштабные системы на Python, практически не существовало, Вы увидите, что Python отлично подходит для профессиональной разработки ПО».
- Хайнек Шлавак, питонист, блогер и спикер
Об авторе:
Гарри Персиваль — программист- питонист, поклонник разработки на основе тестов и экстремального программирования. Автор книги «Python. Разработка на основе тестирования», более известной как «Повинуйся Билли-тестировщику».
Боб Грегори более десяти лет создает событийно-ориентированные системы с помощью DDD на таких языках, как С#, F#, Python и TypeScript.