フレームワークの提供するMVC構造は型志向プログラミングの考え方からはそれなりに遠い地点にあるプログラミング構造だぞ。
例えばCakeやRailsなどのフレームワークはTableModuleパターンを押し付けてくるが、ストラウストラップのOOPの考え方に一番近いのはドメイン駆動型の設計。
で、フレームワーク上でドメイン駆動設計を実現しようとすると、クラス階層を1枚上に丸ごと被せざるを得ない、というくらい両者は相性が悪い。
(基盤となるM-V-C間の繋ぎこみ自体はポリモーフィックに行なわれている事が多いので、無関係でもないが)

まあ、その「押し付け」のおかげでscaffoldingなどの高い開発効率を確保できるわけで、悪いとは言わないけどな。
少なくとも、MVC構造を理解する事と、OOPの考え方を理解する事は、別の問題と考えるべき。
実際、GoFをひとつも理解してなくともRailsやCakeで生産性は出るし、OOPを突きつめると必然的にRailsやCakeの設計に行き着く、というわけでもない。