Why Programming Design Patterns in Objective-C?
Whenever I begin to learn a new language, one of the first things I look for is how to integrate design patterns in that language. Not only does it help me understand how the language is used, it allows me to get a leg up on crafting maintainable code in a fraction of the time.
Searching the web on this topic, I could not find one location that covered this topic fairly. Granted, while there are lots of resources specific to iOS development (mostly either limiting their subject to cover the Model-View-Controller pattern or explain in their own version of a modeling language), there was no information covering Objective-C using UML (for those who want a standard modeling language and will be developing for more then i-devices.)
What This Book Isn't
While I will be using the patterns in the Design Patterns: Elements of Reusable Object-Oriented Software, 1994 book (also know as the Gang of Four or GoF book), this will not be a replacement for it. I would suggest anyone who is interested in design patterns to go out immediately and purchase it (a must for all software engineers), since my book will only cover the nuisances of developing these patterns in Objective-C and will only touch the background of each pattern.
This book is also not for beginning programmers. If you are familiar with either design patterns or Objective-C, you can use it to bridge the gap to the other subject, however, besides some general discussion of formatting of source and diagrams, there will not be any "Hello World" sections. I will provide sources to turn to for beginning information on Objective-C and UML (but use the GoF book for an intro to design patterns.)
What This Book Is
The intent of this book is to cover, in a standard way, the commonly used design patterns used in software engineering. Utilizing my over two decades of designing systems with them, I will provide an explanation on what they are, along with ways I've found to improve performance without losing the readability that makes large, complex project maintainable. This material will apply to all varieties of Objective-C, not only Apple products (however, all design patterns are fair game.)
Along with the book, I will provide the class diagrams (updated to UML instead of OMT from the original GoF book) and frameworks with open-source code that you will be able to use as a starting point to implement the pattern, royalty free in any of your projects. Although the frameworks will be developed in Xcode on my Mac (and can be used directly for Cocoa and Cocoa Touch), they may freely be modified to be used on other Objective-C platforms. The frameworks will also be fully tested to work in iOS 5.1 and on the Mac Mountain Lion (and others, if requested and I have the platform).
Plans For The Funding
Backing this project will let me know that many of you in the community also feel that this sort of information is needed (and that I'm not the only one that wants to see well-designed code.) It will also allow me to purchase services such as proofing, book layout, and website development / hosting for the book's support site and source code repository.
Any funding above set goal will allow me to purchase additional tools to speed development of this and future titles. It will also allow me to purchase additional development environments to port my frameworks to other platforms.