Factory method solution from chapter 4 of the book Head First Design Patterns translated into Objective-C.