Using design patterns lead to more robust, maintainable software. This eBook and code will delve into the more commonly patterns. Read more
This project's funding goal was not reached on May 25, 2012.
About this project
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.
In short, nothing for the actual book has been written. Although I've researched tools and services I plan on using if funded and have begun putting together the overall format, I was not going to actually write any text until I know the community want it (i. e., the project is funded). That being said, I have started formulating the framework code with the intent of releasing it to open source, regardless in the project is funded or not.
My timeline for rewards are as follows. Immediately after funding completes, I will send out thank yous to all of my backers. After that, those backers who have pledged enough for draft chapters will receive draft pdfs and notices of source code updates to the repository as I complete them (the first hopefully in July). This process will complete throughout the time of writing until complete (my goal is by August 2013). At this time, I'll finalize the book, convert to their proper e-formats and distribute to the backers. I'll also send to the print house to begin printing the book for distribution.
After the books are distributed, for anyone contributing at my fantasy rewards (top two levels), I will be contacting you personally to make arrangements to fulfill the rest of the rewards.
My current intentions are to be in Kindle and iBook formats (but could look at others if a backer requests it). If the project is funded, I will be sending out a survey to the backers for the format they want.
- (45 days)