View Review Details


Book:   C# 3.0 Design Patterns
Subject:   Essential design patterns book for .NET developers
Date:   2008-01-23 00:11:50
From:   Alan Sheats
Rating:  StarStarStarStarStar


C# 3.0 Design Patterns by Judith Bishop takes a new approach to a classic subject. In so doing, Bishop imparts deep insight into what is widely considered a difficult subject and conveys practical knowledge in a concise manner that will greatly benefit any serious developer programming in C# for .NET.


After an introductory chapter entitled “C# Meets Design Patterns,” there are nine chapters presenting all of the 23 classic design patterns from Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides's seminal work Design Patterns: Elements of Reusable Object-Oriented Software. The patterns are presented two or three at a time, and each chapter begins with a real-world illustration of the pattern in action. This is followed by a clear UML diagram, a concise description of the pattern players and their roles and a theory example that implements the pattern in quesiton in a complete console application that is made as short as possible, usually 50 to 80 lines of code.

After presenting each pattern, Bishop provides one or more examples, several of which are carried over to and expanded in subsequent chapters, and presents numerous exercises for the reader. Each chapter typically contains sidebars briefly describing one or more C# features and how they can be leveraged in implementing the pattern at hand. There is also excellent guidance on when to use each pattern and an invaluable comparison of the patterns presented in each chapter that provides further insight into their characteristics. In addition, all of the patterns, their interactions and the examples in which they are illustrated are summarized in the final chapter.


In a book of less than 300 pages, the examples, although highly relevant to practical programming problems, are necessarily somewhat simplistic. They do not contain any of the error checking, exception handling or test methods that would be present in industrial-strength code. Nonetheless, they are all complete programs that clearly illustrate the pattern in question and how to code it in C#. Several of the examples are also expanded over several chapters and presented in an appendix as fully functional programs that can be easily extended to provide additional functionality.


Perhaps the greatest strength of Bishop’s book and its greatest benefit to C#/.NET developers is its description of advanced C# 3.0 features and how they can be leveraged to create pattern implementations that are elegant and concise. Bishop not only writes with the authority one would expect of a professor of computer science. It is also very evident that she is an educator who has considerable experience in making difficult subjects comprehensible. As Microsoft C# Senior Developer Eric Lippert puts it in his preface to the book, “C# 3.0 Design Patterns brings the frequently abstruse world of design patterns into sharp focus with pragmatic C# 3.0 implementations.”


Accomplishing this in less than 300 pages is nothing short of a tour de force. I have been trying for some time to get my head around design patterns and searching for good C# implementations. Now my search is over, and I have a practical guide to understanding and implementing the patterns that I need written by an accomplished theorist, practitioner and educator.




See larger cover

"If you already understand the C# programming language and have some introduction to Patterns under your belt, this book will be very exciting to you as it opens up the field to completely new possibilities."
--Peter Bromberg, EggHeadCafe.com