Structure of Design Patterns
page 8 of 9
by David Simmonds
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 33140/ 62

Making sure you get it right

Good Examples in Pattern Literature

Three (sometimes four, often two, rarely one) instances of pattern literature should compete for your attention based on having good explanations of the pattern along with good sample code.  Obviously, since the GoF book is the “bible” and I am writing this tutorial, they both get automatic qualification to the “next round.”

Seriously though, for each pattern-source the explanation of the pattern is rated separately from the rating given to the sample-code which accompanies the explanation.  Out of respect, I translated my own 10 star rating into a color coded rating.  I expect that to other writers who have worked long and hard on their articles/books/videos, this might be a little less jarring than a numeric rating.  Below are the colors and an approximate description of what they signify.  Bear in mind that these are the good examples so even at the most flawed end, the discussions and code sample provided are still pretty useful.






Nails the pattern accurately in a concise easy to follow way.

Pretty good interpretation. Faults are minor or a matter of opinion.

Reasonable discussion or sample code.

Possibly too many clever tricks, skipped explanations etc, possibly inaccuracies in code.

Some flaws: Interface or scoping issues, bulky code, minimal explanation, etc.

Many good examples were omitted since I gave preference to the books I found easy to read, provided broad coverage for the patterns (not just a selected few) and which consistently rendered the patterns in an accurate, easy to follow way.

I find authors miss the point of particular patterns, some get very clever and jazz it up too much so it becomes unrecognizable and some just get it plain wrong.  Sometimes they nail the explanation and deliver it on a platinum platter while some sample code sections are so downright fantastic that just looking at the code after getting a good theoretical grasp of the pattern will totally cement it in your understanding.  If you do not see a particular source listed, it could mean many things.  It does not mean that I do not think the source is useful.  In one JAVA based book I thought the author’s treatment was just too advanced for beginners and too many shortcuts were taken, especially if you are explaining to a new convert who may not understand the trade-offs being taken.  However, the same book would be excellent for seeing how advanced language features interact with design patterns.

Interface issues

These are Interface issues to pay close attention to when implementing the pattern.  Getting the interfaces right will usually mean that the implementation is as robust and recognizable as originally intended by the GoF since:

The classes which implement the interface are fully interchangeable since they are governed by the interface (or as The Economist would put it “fungible”).

The classes are referred to by the interface they implement and so classes which should not know about each other do not end up referring to each other.

Namespace/Scope/modifier issues


These are issues such as constructors which should be scoped as friend and therefore accessible only within the same assembly. Also, shared private constructors should be accessible within the class only and Classes which should be split into namespaces, etc. Putting the classes together in the right namespace helps the reader who learns from your code or maintains it to understand your intentions more easily.  Placing them in the right assembly can help with portability.  It also helps you to check that only the classes which should “know about each other” actually do.  Many times, there should be one or two classes involved in the delivery of the other classes to the outside world.  As mentioned before, these classes would constitute an active or passive delivery mechanism.

Common mistakes in Pattern Literature / Pitfalls to avoid

These are variations seen in other writers' pattern interpretations that, in my opinion, violate the intent of the pattern or make it less robust.  These can include pedagogical issues which make the explanation harder to absorb.  Sometimes it addresses the issue of writers being too clever and burying the pattern under too many clever demonstrations of knowledge of their chosen language (of which I might be guilty sometimes).  Many times it addresses shortcuts which can prove fatal to the pattern-safety and end up introducing holes in the pattern implementation.

View Entire Article

User Comments

No comments posted yet.

Product Spotlight
Product Spotlight 

Community Advice: ASP | SQL | XML | Regular Expressions | Windows

©Copyright 1998-2024  |  Page Processed at 2024-04-14 1:18:54 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search