This is a SoftwareDesignPatternCritique.
I just finished reading TheTimelessWayOfBuilding of ChristopherAlexander which introduces A PatternLanguage. It puts the DesignPattern hype into a clear perspective. A critical one. At least for me.
With this view I miss the following important points in the usual SoftwareDesignPattern discussions:
I pulled together some more critical views from the design pattern pages on this wiki. To make my point into a WikiWord:
See also PatternsOfSoftware, where RichardGabriel and ChristopherAlexander himself criticize both software design patterns and also Alexander's original architectural design patterns that inspired the software ones. Alexander believes his earlier efforts failed, and his more recent efforts that he believes have succeeded apparently have yet to influence software design patterns.
(In brief, the failure was due to overly-mechanical execution, people deluding themselves into believing they'd succeeded brilliantly when they'd actually failed, and the lack of but need for beauty, liveness, and growth.)
Why it is easier to find an AntiPattern than a DesignPattern or an AmeliorationPattern in this Wiki?
[There are design patterns at different levels of granularity.] This is right in line with Alexander's notions, because a PatternLanguage is supposed to include patterns for all levels of granularity. You select one that is fairly general to handle a general problem, then use progressively finer grained patterns as you get to more detailed levels of design. So what you say indicates that these software design patterns are in fact patterns in the Alexander sense. - TomPassin?
A different approach has been taken by ThomasKuehne who in FunctionalPatternSystemForObjectOrientedDesign analyses the relationships between objects and the patterns which they make. This leads to some similar patterns and some different ones. -- JohnFletcher
See also ArchitecturalPattern, DesignPatternsArent, DesignPatternsConsideredHarmful.