Today a review of a maybe not so fresh book, but basic and highly recommended one, the Design Patterns book by the gang of four (GoF).
I have a few more books halfway read (I cheated, because I read this book a while ago) so I'll try to post another review soon ;)
Title: Design Patterns: Elements of Reusable Object-Oriented Software
Author: Erich Gamma, Richard Helm, Ralph Johnson & John M. Vlissides / Addison-Wesley
A design pattern is a verified and correct solution to a well known problem or situation.
This book should be mandatory for all software engineer students. Design patterns are, at least in Spain, sadly not very common, and of those times that are actually used, a few are incorrectly used (for having read about them in a small tutorial but not properly understood the specific pattern).
The patterns explained are divided in three groups:
- Creational: As the name implies, groups patterns related to object construction and instancing.
- Structural: How to structure, organize, architecture, join and access objects.
- Behavioral: The more varied one. From ways of communication between objects, to command systems, hiearchies, state management…
The nice thing of design patterns is that not only they provide you solutions to problems you might encounter in the future, usually you find solutions to problems you've had too (and how knows, maybe you used the same approach without knowing it was a design pattern!).
Some of this design patterns are so useful you'll end up using them very frecuently, like the Factory, Singleton, probably a Facade, and Iterator (, just to mention a few)& are already present in a lot of languages in core modules/components.
While the examples of the book are in C and Java, the patterns explained are so important that we have ports of them to other languages like .NET. There are even books that talk about them again (along with other newer patterns) in languages like PHP.
As I mentioned, a must-read to avoid reinventing the wheel and losing precious time.