オブジェクト指向の「依存関係逆転の原則 (Dependency Inversion Principle)」について簡単に纏めてみる。
例えば、パッケージAとパッケージBあり、パッケージAのクラスがパッケージBのクラスを使用しているとする。ここで、パッケージBの方が変更されることが多く、リビルドされることが多いとすると、通常、それに依存するパッケージAもその都度リビルドが必要になる。
そこで、パッケージB内のクラスのインタフェースをパッケージA側で持ち、パッケージB内のクラスはそのインタフェースを実装するよう設計する。こうすれば、そのインタフェースが変わらない限り、パッケージA側はパッケージB側の変更のたびにリビルドせずに済む。(型=クラスの情報としては、パッケージAはパッケージBに依存していないので。) 機能としては、パッケージAはパッケージBに依存したままだが、ビルドの際の依存関係については、パッケージBがパッケージAに依存するかたちになる。
いろいろ書いたがざっくり言うと、あまり変更されない方(パッケージA)が良く変更される方(パッケージB)のインタフェースを持って規定し、良く変更される方はそれに合わせて実装するというアーキテクチャにすると、開発の際にリビルドする回数が減らせるのではないか、ということ。