メンテナンス性の高いアプリケーションの創造は、科学でもあり芸術でもあります。 良く知られていることですが、高い品質のコードを保持するための鍵は、 オブジェクトが疎結合すると同時に、高い凝集度も合わせ持つということです。 結合が疎であるということが、あるクラスがいかに少ししか外部のオブジェクトに "束縛されて" おらず どの程度そのクラスがそれらの外部オブジェクトに依存しているかの指標となる一方で、 高い凝集度は、クラスの全てのメソッドおよびプロパティがそのクラス自身と強く関連を持ちつつ 他のオブジェクトがやるべき仕事をしようとはしないということを意味します。 凝集度が失われ、クラスの結合度が増加してしまわないように、依存関係をガチガチにコードすることなく システム内の別の箇所とクリーンにやりとりすることが必要な場面も確かにあります。 Observer パターンを使用すると、オブジェクトがイ