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.