Question: I have observed that most of the design patterns (I refer mostly from the Gang of Four book) are all based on polymorphism. That leads me to a "enlightened" moment that OOP's polymorphism is the most important feature in the paradigm.

Some of the patterns use polymorphism are: strategy, factory, bridge...

With that, I don't understand why we are not just teaching developers really good polymorphic behavior of OOP instead of overloading them with a bunch of patterns which in fact are based on polymorphism?

Answer: 
Wouldn't

> 
> really good polymorphic behavior
> 
> 
> 

actually **be** how to apply the Gang of Four patterns in a **good** way?

As in, how to apply strategy as a tool so that you don't violate [SRP](http://en.wikipedia.org/wiki/Single_responsibility_principle) for example.
Because, while polymorphism is *used* to implement the patterns *in OO languages*, but the patterns can be implemented without it (for example, imagine implementing a factory in C).

Additionally, design patterns are, like polymorphism, tools that help developers solve problems. Only learning a subset of the tools (eg, only polymorphism) will put developers at a disadvantage because they will need to “work from first principals“ (so to speak) instead of basing their work (and their thought) on higher level concepts (like design patterns).