Over-engineering leads to unnecessary complications.
Using design patterns without clear necessity can lead to over-engineering, where the solution is more complex than the problem. In Java, this might mean employing a Proxy or Adapter where simple inheritance or composition would suffice, resulting in harder-to-maintain code.