Using design patterns lead to more robust, maintainable software. This eBook and code will delve into the more commonly patterns.
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.
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.
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.
pledged of $5,000 goal
seconds to go
Funding Unsuccessful This project reached the deadline without achieving its funding goal on May 25, 2012.
Apr 10, 2012 - May 25, 2012 (45 days)
Pledge $10 or more
A thank you email and your name listed in the acknowledgements section of the book and on the sponsor section of the website.Estimated delivery: Dec 2013
Pledge $20 or more
A thank you email, your name listed in the acknowledgements section of the book and sponsor section of the website, plus a copy of the e-book and frameworks.Estimated delivery: Dec 2013
Pledge $35 or more
A thank you email, your name listed in the acknowledgements section of the book as a reviewer and listed in the sponsor section of the website, a copy of the e-book and frameworks plus draft chapters of book with source code as they are completed.Estimated delivery: Jul 2012
Pledge $100 or more
A thank you email, your name listed in the acknowledgements section of the book as a reviewer and listed in the sponsor section of the website, a copy of the e-book and frameworks plus draft chapters of book with source code as they are completed, and a signed copy of the printed book shipped to you.Estimated delivery: Jul 2012
Pledge $250 or more
0 backers Limited (5 of 5 left)
A thank you email, your name listed in the acknowledgements section of the book as a contributor and listed in the sponsor section of the website, a copy of the e-book and frameworks plus draft chapters of book with source code as they are completed, a signed copy of the printed book, and your choice of design pattern for one chapter of the book.Estimated delivery: Dec 2013
Pledge $5,000 or more
0 backers Limited (5 of 5 left)
A personal letter thanking you for single-handedly backing my project, a signed hardbound copy of the book including source code on CD-ROM, recognition in the book as being a gold level patron backer and listed on the sponsor section of the website, draft chapters to review as they are completed, your choice of design pattern for one chapter of the book, and personal assistance for integrating my frameworks into one of your projects.Estimated delivery: Dec 2013
Pledge $10,000 or more
0 backers Limited (4 of 4 left)
As that special someone who is willing to double my initial funding goal, I will reward you with the following: A personal letter thanking you for exceeding my expectations for the project, a signed hardbound copy of the book including source code on CD-ROM, recognition in the book as being a member of my "GoF" club,name listed on the sponsor section of the website, draft chapters to review as they are completed, your choice of design pattern for one chapter of the book, assistance for integrating my frameworks into one of your projects, and I will personally provide a one-day seminar at your site, customized to your needs (based on the book). All attendees to the training will get the training materials and copies of the eBook. As a final reward, you will receive all apps I write free for LIFE.Estimated delivery: Dec 2013