> I'm a firm believer that the design patterns as popularized by the > Java/C++/C# folks reveal flaws in the language design and not how to address > architecture problems.
Agreed. Many OOP design patterns in Java are the boilerplate code needed to compensate for lack of language features. Also (especially in Java) after you read Design Patterns, it's important to know when not to use it, and avoid writing code like `factory.mediator.adapter.facade.builder.build().doSomething()` :). Yet, I feel it's very useful to read Design Patterns to improve your understanding of language capabilities. Maybe you should call it not Patterns but like "Solutions of Common Problems". It's kinda like a short and effective way of reviewing tens of real world programs. But instead of spending lots of time reading actual code of actual programs, you look at its simplified skeleton version in short example in form of Pattern/Solution.