Design patterns are conceptual tools for solving complex software problems. We will be discussing the ones that appear in Cocoa, but they exist in all programming languages and some span multiple languages. For example, MVC is applicable to any application driving a user interface regardless of the language it is written in. Design patterns appear at different levels of the application structure, from the organization of the code modules to data structure creation to communication. Some are like two-stage object creation you are already using, while others, like key value observing, or KVO, are more esoteric and are not found in every project.
These patterns are simple and elegant solutions that have evolved over time and may have become generally accepted as the best way to address certain design challenges. In this chapter, we will cover...