I have such mixed feelings about this; it's free... but, I don't actually think it's... good? I mean, it's well written, and it has examples that try to tie it into practical examples, and thats good, but there are just lots of little technical details that I find are slightly off.
For example, a considerable amount of time is devote to showing that the 'observer' pattern isn't a bad idea.
...but, although its not always a bad idea, there are a number of people (see [1]) who have comprehensively covered why it is troublesome.
On the prototype pattern:
> With all of these options, I honestly can’t say I’ve found a case where I felt the Prototype design pattern was the best answer. Maybe your experience will be different, but for now let’s put that away and talk about something else: prototypes as a language paradigm.
...what? Then why did you bring it up at all?
Each of the chapters is really long, covering what is really quite basic material mixed in with some kind of questionable content and some examples... but no actual working code to show how to use the examples.
I like https://en.wikipedia.org/wiki/Software_design_pattern
...I'd like this too, if it was just... I don't know. Slightly more technically sharp and less rambling?
Surely you could cut down the discussion slightly, show a practical example of where each pattern is actually useful that actually compiles, and just drop any patterns that... aren't useful, and you'd have an excellent book.
[1] - https://infoscience.epfl.ch/record/148043/files/DeprecatingO...