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.
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.
Understand the common problems all patterns are trying to solve.
Common Design Patterns
Learn what common patterns such as MVC and MVVM are all about.
Learn from experimental architectures like View State-Driven MVC and The Elm Architecture.
How Networking fits into common design patterns.
Understand how each pattern is implemented at the code level.
Understand the commonalities, differences, and trade-offs between architectures.
Take-Aways for Any Code Base
Learn lessons from each architecture that make any code base better.
Techniques to factor out shared code and deal with large view controllers.
The accompanying voice-notes sample app is fully implemented in five architectures.
Overview of this video series.
One App — Eight Architectures 1h17min
Live-coding a minimal application in eight different application design patterns.
Building a Mini-Player — MVC 47min
Showing how to add a mini-player in plain MVC.
Building a Mini-Player — MVVM-C 50min
Working with view-models, coordinators, and RxSwift.
Building a Mini-Player — MVC+VS 57min
Applying the observer pattern for view state communication.
Building a Mini-Player — MAVB 47min
Working with bindings, model-adapters, and view-binders.
Building a Mini-Player — TEA 28min
Using reducers and a declarative view layer.
Building a Mini-Player — MVC Refactoring 46min
Improving the MVC code by refactoring the player API.
The Elm Architecture Framework 1h06min
Implementing the framework behind TEA.
Formats & Extras
Save on each additional book
The Complete Collection
- Thinking in SwiftUI (+ Videos)
- App Architecture (+ Videos)
- Advanced Swift (+ Videos)
- Functional Swift
- Core Data
- Optimizing Collections