Software developers need to solve various problems. Many times, these problems are the same or similar to the ones they’ve already encountered in other projects. Wouldn’t it be great to apply the solution you’ve found instead of reinventing the wheel over and over again?
That’s precisely the reason why software design patterns exist. A design pattern is a standardized way to address a recurring problem. Relying on a proven strategy will not only save you time, but you can rest assured that it’s indeed the right choice.
Design patterns are the result of a long evolution process. It all started with a book published in 1994 - yes, it’s that old! - called “Design Patterns - Elements of Reusable Object-Oriented Software.”
The gang consists of four renowned software engineers: Erich Gamma, Ralph Johnson, Richard Helm, and John Vlissides. They identified the most significant common issues that occurred in multiple projects and developed best practices to solve them.
The best part: these solutions are (programming) language-agnostic. You can use the design patterns with any object-oriented programming language.
Many modern programming languages and frameworks have integrated the GoF patterns. You don’t have to write additional code to support e.g., the Iterator or the Observer.
Swift is no exception. Actually, it provides many advanced language features and constructs — such as type extensions, lazy initialization, and predefined protocols — that let us adopt and integrate the design patterns into our projects easily.
This book covers all these topics and provides best practices you can apply in your upcoming projects.