依存性逆転の原則
伝統的なアプリケーションアーキテクチャーにおいて、下位レベルコンポーネント(e.g. Utility Layer)はより複雑なシステムの構築を可能にする上位レベルコンポーネント(e.g. Policy Layer)によって使用される形で設計がおこなわれる。この方法では上位レベルコンポーネントは直接下位レベルコンポーネントに依存する。この低レベルコンポーネントへの依存は、上位レベルコンポーネントの再利用の機会を制限してしまう。
依存性逆転パターンの目指すところは、抽象レイヤーを導入することによってこの高度に結合した状態を回避し、上位の policy layer の再利用性を高めることにある。