I want to use the Java Observer pattern in my project. Just as object-oriented programming encourages code reuse, design patterns encourage design reuse. Indeed, design patterns allow you to reuse clean, time-tested designs. However, design patterns have come under an increasing amount of criticism lately.
Critics point out that inexperienced developers can easily fall into the pattern trap.
The pattern trap blinds inexperienced developers. As such, instead of solving a solution in the best way possible, the end goal for novice developers centers on implementation of as many design patterns as possible. To some, using a design pattern seems to guarantee a good design. Unfortunately, a design pattern does not guarantee good design. You need to know criterion number 1 first and foremost.