This book explains a range of application design patterns and their implementation techniques using a single example app, fully implemented in five design patterns.

Instead of advocating for any particular pattern, we lay out the problems all architectures are trying to address: constructing the app’s components, communicating between the view and the model, and handling non-model state. We show high-level solutions to these problems and break them down to the level of implementation for five different design patterns — two commonly used and three more experimental.

The common architectures are Model-View-Controller and Model-View-ViewModel + Coordinator. In addition to explaining these patterns conceptually and on the implementation level, we discuss solutions to commonly encountered problems, like massive view controllers.

On the experimental side we explain Model-View-Controller+ViewState, ModelAdapter-ViewBinder, and The Elm Architecture. By examining these experimental patterns, we extract valuable lessons that can be applied to other patterns and to existing code bases.

Videos

The videos accompanying the book give you a better sense of the different application design patterns in practice. In more than seven hours of live-coding and discussion we compare and contrast different design patterns, build new features in all of them, and show how The Elm Architecture framework used in the book is implemented.