2. The Patterns - а здесь приводятся паттерны для решения стандартных проблем из областей, разобранных в первой части
- Domain Logic Patterns - здесь речь идет про transaction script (для простой бизнес-логики), domain model, table module, service layer, которые мы обсуждали чуть выше
- Data Source Architectural Patterns - здесь разбираются такие паттерны как: table data gateway, row data gateway, active record, data mapper
- Object-Relational Behavioral Patterns - здесь приводятся поведенческие паттерны вида: unit of work, identity map, lazy load
- Object-Relational Structural Patterns - здесь разбирается очень много структурных паттернов, многие из которых завязаны на работу с данными, identity field, foreign key mapping, association table mapping, dependent mapping, embedded value, serialized LOB. А также целый набор паттернов для решения проблемы хранения информации о иерархиях наследования в реляционной базе: single table inheritance, class table inheritance, concrete table inheritance, inheritance mappers
- Object-Relational Metadata Mapping Patterns - паттерны для хранения метадаты о связи классов и сущностей в базе: metadata mapping, query object, repository
- Web Presentation Patterns - куча паттернов про представление, но из практики, что была актуальна 20 лет назад: model view controller, page controller, front controller, template view, transform view, two step view, application controller. Если и читать это, то ради исторического экскурса:)
- Distribution Patterns - всего два паттерна для решениия вопроса распределенных объектов: remote facade, DTO (data transfer object)
- Offline Concurrency Patterns - паттерны для работы с конкурентностью: optimistic offline lock, pessimistic offline lock, coarse-grained lock, implicit lock
- Session State Patterns - паттерны относительного хранения состояния сессии клиента: client session state, server session state, database session state
- Base Patterns - базовые паттерны, что не влезли в другие категории: gateway, mapper, layer supertype, separated interface, registry, value object, money, special case, plugin, service stub, record set. Эти паттерны являются достаточно простыми и часто применяются в разных сценариях.
В общем, книга для 2002 года была просто огонь - она рассказывала про подходы к проектированию и решение типовых проблем. Также в рамках серии книг Martin Fowler Signature были выпущены и другие книги, которые развивали эту тему. Например, книга "Enterprise Integration Patterns (Шаблоны интеграции корпоративных приложений)", про которую я рассказывал раньше. Ну а сейчас книга скорее является базой, которую многие изучают по другим книгам, которые вышли позже и рассказывают про актуальные паттерны в контексте конкретной платформы (Java, Kotlin, .Net, Python, ...) и делают это супердоступно.
#Patterns #Software #SoftwareArchitecture #SoftwareDevelopment #Architecture #SystemDesign