I would not give it to a beginner as it would corrupt their mind with useless drivel .
It's authors exhibit themselves as morons who celebrate renaming existing computer science concepts while occasionally mixing and matching them.
I would not be this uncharitable towards it if it was not such a famous (and hence harmfull) book.
It's harmfull because software engineering is really hard, and they just add up to the load by trying to have the reader memoize their junk instead of doing something that would actually make them a better programmer. And, if you try to use their concepts while programming - shudders, oh god help you.
I'm not going to iterate over every pattern. Here's an example:
Flywheight? You assholes, just tell memoization for what it is. Why don't you rename existing data structures as well? Good thing those come out of the box, otherwise you would have began the book by renaming array, linked list and dictionary. Maybe you would have called linked list "the chaingang" or something.
You don't simplify things by giving things cuddlier names. You stunt peoples growth that way.
Gang of four book is a malignant offshoot of the practice of attempting to make software engineering better by legalizing and dogmatizing it by decomposition into trivial details that hurt your brain. It's a branch of 'consultancy driven software development' where people attempt to aquire a halo of professionalism by calling things by fancy names and over-complex descriptions (while skipping the practical things with equally complex names but at least those weren't made up by a bunch of idiots).
What I understand from your comment is that you dislike the Gang of four book because it renames concepts that don't need the cutesy names that they give them. Do you have a problem with the _concept_ of design patterns? Or just the names they are given? Are the concepts themselves sound and worth paying attention to?
"It reads like it was written by a clever, verbose, and 'over-eager novice."
Design patterns are a really usefull concept. The GoF book just totally botches up that concept by dwelving deep in trivial language details while missing the big picture.
Christopher Alexander's "A timeless way of building", and "Notes on the Synthesis of Form" are the books in architecture that prompted a lot of dicussion in software design circles, and from which I presume GoF got their idea of software design patterns.
What are good design patterns in software? IMO they are composed from the programming models exposed in a basic CS book like Aho and Ullman's "Foundations of Computer Science" and further developed in a books like Structure And Intrepretation of Computer Programs.
GoF is an ok anecdotal reference after those, but it really is not suitable as a didactic resource.
Peter Norvig wryly commented that 16 of the 23 pattern are either invisible or non-existent in lisp Lisp[0].
[0] http://www.norvig.com/design-patterns/design-patterns.pdf
Among the few patterns that are more generally useful and have stood the test of time, we'd find Composite, Command and of course Observer.
Design Patterns are very useful, but they are a tool like anything else.
They're not just a bunch of things with cutesy names, they are the most common and core patterns that we can use in OO.
Yes, they are way overused, particularly in Java, but they are useful.
The book could be summarized however.
this level of the craft is subtle, intuitive, and often inaccessible to the conscious intellect.
Patterns can be useful but only in moderation and only with reason. They're spice.
A contrived example, but:
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...
FizzBuzz Enterprise Edition. It's enterprisey!