General Description
The book is slightly over 500 pages long and consists of two parts, comprising 18 chapters. It includes numerous code snippets, diagrams, and schematics. There are no traditional illustrations. The difficulty level is somewhere between easy and medium.
Table of Contents
Part I. Overview
- Chapter 1. Layering the System
- Chapter 2. Organizing Business Logic
- Chapter 3. Object Models and Relational Databases
- Chapter 4. Presenting Data on the Web
- Chapter 5. Managing Concurrent Tasks
- Chapter 6. Sessions and State
- Chapter 7. Distributed Computing Strategies
- Chapter 8. The Big Picture
Part II. Patterns
- Chapter 9. Rendering Business Logic
- Chapter 10. Data Source Architectural Patterns
- Chapter 11. Object-Relational Behavioral Patterns
- Chapter 12. Object-Relational Structural Patterns
- Chapter 13. Object-Relational Metadata Mapping Patterns
- Chapter 14. Web Presentation Patterns
- Chapter 15. Distributed Data Patterns
- Chapter 16. Offline Concurrency Patterns
- Chapter 17. Session State Patterns
- Chapter 18. Base Patterns
Opinion
A purely theoretical programming book, which at times feels slightly outdated. I picked it up solely because of the author's name—Martin Fowler has been a well-known advocate of software development and an experienced programmer for many years.
The book left a mixed impression: on one hand, it covers many popular patterns and architectural solutions, some of which have remained relevant for decades. On the other hand, the concepts behind modern architectures have evolved significantly over the past years—and even more so over the past decades.
Patterns such as Singleton, Adapter, or layered architecture with OOP still apply, but modern systems have become more decentralized and high-load. The importance of replication has increased, caching is used ubiquitously, and message brokers have become an essential part of most complex systems—yet all of this is barely covered in the book.
Thus, the book hardly qualifies as a relevant guide for modern applications. And given that today educational content can go beyond dry text, a few diagrams, and explanatory code snippets, I wouldn’t particularly recommend reading this book. Perhaps it was once considered a "classic" of programming, but now, I’m sure, there are more modern and significantly less boring resources to learn similar material from.