🧩 Design Your Future with Patterns!
Head First Design Patterns is a unique, engaging guide that simplifies complex design patterns for software development. With a focus on visual learning and practical application, this book is perfect for developers looking to enhance their skills and understand the principles behind effective design.
J**R
Highly Recommended !!!
This book aims to teach us how to reuse design patterns that have been used over and over again. While this book does not cover all patterns in detail, it covers the patterns that are commonly used according to the authors' mind. In overall, this is the book you want to buy as a starting point to learn design patterns.To begin with, before reading this book, you have to know about Java programming language along with the object-oriented features such as encapsulation, inheritance, and polymorphism. Bear in mind that by having solid object-oriented knowledge does not make you a good object-oriented designer. I thought the opposite until I read this book. For those who do not know the language and/or the object oriented feature, they should study them first before attempting to read this book.When reading this book, please note that the primary intention of this book is to teach you about design patterns. Therefore, if you find the examples are not what you expected (too simple, childish, imaginary, and so on), you need to know that the examples are made as simple as possible so you can concentrate on learning design patterns. Unfortunately, some people just do not understand this approach. They probably want examples that have hundreds line of code to explain each patterns and I am very sure if this was the case, they would give bad review anyway by arguing that the examples are too complex.The only negative thing is the fact that not all 23 patterns are covered. I wish all of them were covered in a single book and even if the price were twice as much I would certainly buy it. I do not know why the authors did so. They covered only around 13 and cramp the others in 20 pages in the appendix.In my personal experience, after reading this book, it changed my paradigm toward object-oriented design and made me ask myself, "Why I didn't buy this book earlier?" Had I bought it earlier, my campus projects would have gone easier. In addition, ever since I read this book, I often think about the pattern(s) that can be applied in the other programming books' code example, especially when the examples have too many if and if else statements as they could be refactored using state pattern or command pattern. The reason some programming books do not bother with design patterns (even though the authors probably know about it) is because not their focus in their books. That is why this book is useful. Also, please be aware that in this book source code, the instance variables are not declared private. In reality you have to make it private according to the principle of the least privilege.Finally, I highly recommend this book to anyone who already knows Java and its object-oriented features as it helps you to learn commonly used patterns and to design better using best design principles (open closed principle, encapsulate what varies, etc).
J**S
Excellent book, not just for Java developers!
I purchased this book about a year ago and devoted a number of hours each week going through it. I am a software developer by trade, but never took a computer science course in my life, mostly because I was self-taught as a kid and all of this pre-dated the Web by about 20 years.In any event, one area where I knew I was lacking was a formal understanding of design patterns. I was in the middle of a fairly large enterprise application, and while I was fully versed in Object Oriented Programming (and had even taught it in the past), I realized that everyone we were hiring out of college "spoke" a different language than I did, talking about singletons, factories, MVC, etc.This book covers those and many, many more, in a completely involving and revolutionary way. It's basically designed with the Java language in mind, but I'm a .Net developer, never having learned Java. However, the book is so thorough and intuitive, that I decided to do all of the examples in C# (close enough to Java that in many cases, there's almost a 1-to-1 relationship between my home-grown example and the one in the book.So for me, the book's benefit was two-fold: exposure to both design patterns and the Java language. In many cases, I was able to ".Net-ify" the examples to take advantage of specific features of .Net. A good example was in the Observer pattern where you have an object that changes over time, and other objects ("observers") need to be aware of this change. The book presents a language-agnostic approach, where the observable object registers all of its observers, and cycles through them notifying each one that it has changed. With .Net, it's much easier (and more appropriate) to implement this using events, where the observable object doesn't care who's watching, it just announces "I've changed!" and each observer can then decide how to handle that event.But I digress... ultimately, I just threw myself into this book, doing every example as written, and then modifying those examples to function with the .Net mentality. I even did all the pencil exercises, puzzles, etc. It's all part of the learning process, right?So, in a nutshell, if you need to learn design patterns, get this book. It's a lot of fun, and chock full of great information and examples that you'll be able to apply to your own projects right away.
Trustpilot
2 weeks ago
1 day ago