すげ替え可能にすることで、
単体テストが可能になるし、責任の範囲も明確になる。
インターフェースで実装すべき機能も明確になる。

このようにシステム全体の結合度を下げ
大規模開発を行いやすくする。
そのやり方を標準化するフレームワーク