- Amazon Student members save an additional 10% on Textbooks with promo code TEXTBOOK10. Enter code TEXTBOOK10 at checkout. Here's how (restrictions apply)
Cocoa Design Patterns Paperback – Sep 1 2009
|New from||Used from|
Special Offers and Product Promotions
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
Praise for Cocoa Design Patterns
“This long-needed book is a great resource for Cocoa newcomers and veterans who want to get the why behind the what. The list of patterns gives historical perspective and answers many developer questions and the last three chapters–covering Core Data, AppKit, and Bindings–are a must-read; they reveal insights that might otherwise require hours of discussion with Apple engineers or access to source code.”
–Tim Burks, Software Developer and Creator of the Nu Programming Language, www.programming.nu
“This book is a comprehensive and authoritative treatment of design patterns and their practical applications in Cocoa projects. I recommend this book to anyone who wants to advance from intermediate to expert proficiency as a Macintosh developer.”
–John C. Randolph, Vice President Engineering, Stealth Imaging, Inc.
“Cocoa Design Patterns is a fantastic book that will show you the ins and outs of software design patterns, how Cocoa makes use of them, and how to apply them to your own applications for better, more robust, and more maintainable software.”
–August Trometer, Owner of FoggyNoggin Software
“Cocoa Design Patterns is superb! It is highly readable, thoroughly enjoyable, and filled to the brim with wisdom that will make you a more efficient and effective programmer. The authors utilize a consistent and self-contained approach to each chapter, making it easy to return to use as a reference. However, the material is so interesting and vital to Cocoa programmers that you’ll want to read it from cover to cover.”
–David Mandell, Independent Developer
“Erik and Donald’s book really helped me out with the conceptual side of programming. It caused me to realize where I was going wrong in my code and helped me sort out my design issues.”
“This book is recommended for any programmer interested in a deeper understanding of Cocoa. Reading it might have helped me become a better software engineer in any object-oriented language. I’ll keep it handy as a constant reference and look forward to reading it again more carefully.”
From the Back Cover
“Next time some kid shows up at my door asking for a code review, this is the book that I am going to throw at him.
-Aaron Hillegass, founder of Big Nerd Ranch, Inc., and author ofCocoa Programming for Mac OS X
Unlocking the Secrets of Cocoa and Its Object-Oriented Frameworks
Mac and iPhone developers are often overwhelmed by the breadth and sophistication of the Cocoa frameworks. Although Cocoa is indeed huge, once you understand the object-oriented patterns it uses, you'll find it remarkably elegant, consistent, and simple.
Cocoa Design Patternsbegins with the mother of all patterns: the Model-View-Controller (MVC) pattern, which is central to all Mac and iPhone development. Encouraged, and in some casesenforcedby Apple's tools, it's important to have a firm grasp of MVC right from the start.
The book's midsection is a catalog of the essential design patterns you'll encounter in Cocoa, including
- Fundamental patterns, such as enumerators, accessors, and two-stage creation
- Patterns that empower, such as singleton, delegates, and the responder chain
- Patterns that hide complexity, including bundles, class clusters, proxies and forwarding, and controllers
And that's not all of them!Cocoa Design Patternspainstakingly isolates 28 design patterns, accompanied with real-world examples and sample code you can apply to your applications today. The book wraps up with coverage of Core Data models, AppKit views, and a chapter on Bindings and Controllers.
Cocoa Design Patternsclearly defines the problems each pattern solves with a foundation in Objective-C and the Cocoa frameworks and can be used by any Mac or iPhone developer.See all Product Description
Inside This Book(Learn More)
Most Helpful Customer Reviews on Amazon.com (beta)
In most subjects we learn by acquiring a little bit of knowledge and, once that bit has been understood, we move on to the next little bit, until the bigger topic is understood. First we learn A then we learn B. Unfortunately, this method of learning does not work well with application frameworks such as Cocoa. These frameworks usually consist of a number of complex idea that are strongly interrelated. You cannot learn A then B, since A requires B and B requires A. Instead you must learn topics A..Z all at the same time! Cocoa is especially difficult for most programmers since it is based on using Objective C, and Objective C is based on Smalltalk. Smalltalk is an extremely dynamic language whose principles are significantly different than those of current popular languages. Thus, most programmers must learn zilllions of elements of the Cocoa framework and also the unusual ideas behind Objective C (Smalltalk). These are essential since Cocoa works differently than other popular frameworks and cannot be understood without understanding Objective C's dynamic approach to programming.
Up until now we have had Objective C books which help learning Objective C, and the excellent Hillegass book (Cocoa Programming for Mac OS X) which is a tutorial on Cocoa. The Hillegass book does help the reader understand many principals behind Cocoa, but it stops short of giving in depth knowledge of the design patterns that Cocoa uses. Thus when the user tries to go beyond the Hillegass book he/she is frustrated because they were not taught the full idea behind each element of Cocoa and their connections to other elements. There is not enough information for the reader to branch out to develop their own programs.
Cocoa Design Patters, on the other hand, presents, in a very professional manner, the most important Cocoa patterns, in depth, and how they are all inter-related. Furthermore, it presents details how how to use the patterns, examples of where they are used in Cocoa, and includes extremely valuable and unbiased information on the pro's and con's and pitfalls of using each pattern. Although this is certainly not tutorial/beginner information, the book is extremely well written and enjoyable to read (especially for those of us who loved Smalltalk and other dynamic languages). It is one of the best written highly technical books I have ever read (and I have been programming since 1970).
In my opinion this book will save the prospective Cocoa programmer many, many, many hours of frustration. I only wish it had been available several years ago when I first tried to learn Cocoa (I did not succeed then, but I am succeeding now).
One final note. The authors could do the Mac Developer Community, and the wider developer community, an enormous favor. In this book they demonstrate an impressive depth of knowledge about Cocoa, Objective C, the Mac development world, and the XCode tools. It would be fabulous if they were to develop a professional unbiased critique and comparison of the pro's and con's of the Objective-C/Cocoa approach to development with other framework/development environments (e.g. Microsoft's). I think this is especially important since the dynamic language approach to programming has fallen out of favor, yet I think it has many benefits that are seriously under appreciated. This document would:
Clearly show programmers the benefits of the dynamic language / Cocoa approach to programming. Perhaps it would reawaken interest in dynamic languages!
Point out the areas where Objective C/Cocoa/XCode has weakness and should be improved. This may inspire Apple to improve their development tools at a brisker pace.'
The development world has had few breakthrough improvements over the last decade or two. I think that much can be learned from Cocoa/Objective C, and I hope That Cocoa Design Patters is just the beginning of a renewal of interest in this too-long-neglected approach to software development.
Cocoa Design Patterns explains techniques commonly used throughout the Cocoa architecture (Model-View-Controller, Release/Retain Counting, Delegates, etc.), and provides concrete implementation examples in the frameworks. For each pattern it also describes the scenario that you may use it in, and the consequences, good and bad, to using the pattern. I would recommend this book to anyone after they've cut their teeth on Cocoa, after writing their first couple simple applications. This book shines light on some of the design decisions Apple made with Cocoa, and helps the reader understand how to best leverage the patterns utilized in the Cocoa frameworks.
Simply stated, this book is a joy to read. It answered many questions that I had about the "why" behind the evolution of Cocoa and has left me feeling better able to make the most of its power. Cocoa Design Patterns is written in a style that is extremely accessible. It is almost like a detective novel as each chapter unravels the secrets of Cocoa. The most fun I've had reading a technical book in a long while.
- there are several errors in the code samples. Occasional bugs are inevitable, but non-compiling code is inexcusable and a major disappointment, for a book of this nature;
- its coverage of the Singleton pattern is incomplete, considering that it doesn't discuss Apple's own recommendations on how to implement a singleton;
- no discussion of patterns related to thread safety;
- the discussion of HOMs (higher order messages) is interesting, but it strikes me as something rarely used; I'd have preferred if the author had used the space spent on HOMs to discuss something more practical. For instance, a common application of the Proxy pattern is the asynchronous loading of images off the web. I think that would have been more useful;
- later chapters are very repetitive, and much less concrete in actual usage, than earlier ones. For instance, chapters 28 (Managers), 29 (Controllers), and 32 (Bindings and Controllers) have a lot in common, and that commonality is repeated in all 3 chapters. Chapter 31 (Application Kit Views) is a repetition of material covered in several previous chapters and adds nothing new.
I'm a great fan of Design Patterns and think that the Gang of Four book (Design Patterns: Elements of Reusable Object-Oriented Software) is still the best book on the subject. However, it's focused on C++ and not on Objective-C and Cocoa. This book, despite its faults, is a worthy partner to the Gang of Four book and is a great addition to any Cocoa programmer's library.
The book is worth reading even if you do not (exclusively) program for the Mac. The 'design patterns' in the title are more than just a 'higher-level coding standard' for the Mac. They are actually design philosophies, ways of structuring your code. Yes, they heavily utilise the dynamic nature of Objective-C but it does not mean that their relevance is restricted to that environment. Objective-C is a fairly thin layer and a small runtime on top of C, after all.
Each design pattern described in the book is a solution methodology for a software engineering problem. The authors present a problem, usually through a small example. Then they explain the 'design pattern', the solution chosen by the Cocoa developers. They then show you why that particular way of approaching the problem makes the result more robust, more flexible and easier to modify. Software reusability and maintainability are central tenets of the book. They demonstrate that while a quick-and-dirty solution might be shorter, using the given design pattern, or, if you like, adhering to a particular software development principle will save you development and maintenance time in the long run, especially for large projects.
Many of the design patterns revolve around the factoring your problem into preferably orthogonal subproblems, decompose your software into units mapped to the subproblems and the design of the interactions between those units. The book is all about minimising inter-dependencies, by keeping your interfaces clean and your units being self-contained. The design patterns are methods to achieve that goal. Whether you rely on the objects and the dynamic features of Objective-C or you achieve the same result by explicit bits of procedural code is beside the point.
You have to know at least some Objective-C and introductory level of Cocoa to be able to read the book, as all examples use those. However, what you learn from the book you can use in any software project, regardless of language and environment. If you know enough Mac-speak so that you can read the book, I recommend it, even if you are not doing any serious Mac development.
The style of the book is pleasant, the explanations are concise but they are clear and thorough. The examples are also good, they are large enough to show the practical benefit of the design pattern they demonstrate but are small enough to the reader actually reading the code and not just glazing over the listings.
Look for similar items by category
- Books > Computers & Technology > Apple > Cocoa
- Books > Computers & Technology > Computer Science > Information Theory
- Books > Computers & Technology > Hardware > Macs
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Object-Oriented Design
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Textbooks > Computer Science & Information Systems > Object-Oriented Software Design
- Books > Textbooks > Computer Science & Information Systems > Programming Languages