突込みどころを突っ込んでみる。

まず、
オブジェクト指向は仕様定義や詳細設計をサボる口実ではありません。
より理解しやすい形で、ミスがなるべくでないようにと気をつけながら
用件定義や詳細設計などを考える行為のことです。
考えるプロセスそのものなのです。
実装形態うんぬんやプログラミング言語が即「オブジェクト指向」であることはありません。
( ・ω・)oビシッ
ここいらの切り分け、つまり思考プロセスってのと、プログラミングは別物という
意識をもててないヒト達はしばしば「オブジェクト指向用言語=オブジェクト指向」と
勘違いをされます。でんじゃー。*1
オブジェクトは大きな単位でとらえて、理解を促し、
理解したらちょっと小さな単位でまた考えて、理解を促し、
また理解できたらさらに小さな単位でまたまた考えて、理解を促し、
まとまりがでてきたらさらにまた考慮という具合に考えを突き詰めていくのです。
ゆえに、オブジェクトの数はしばしば膨大になります。
膨大になるとまたしんどいので、楽になれそうな単位で区切ることを行い、
管理の手間を削減する努力をするのです。
これらはJar化やDLL化やコンポーネント化と呼ばれる行為です。


通化も共通化です。
なんでもかんでも1箇所でやることが共通化じゃありません。
仕様や要件があり。
その実装に際して「あんなしょりやこんな処理が欲しい」ということがまずあり、
それらの処理はどの範囲で使えればよいかを考え、
1クラス内で収めるもの、独立したクラス化するもの、static化までしたほうがよいもの等、
考え試行錯誤の結果を踏まえた実装形態であるのです。
考えることを放棄した実装形態が共通化ではありません。

*1:余談ですが、ゆえにBasicでオブジェクト指向を実現するとか、Javaでべた書きプログラミングとかいったことは実現できるのです。ただ言語規約上、しんどいだけで。