ブログトップ 記事一覧 ログイン 無料ブログ開設

Strategic Choice

2009-02-04

[]安定依存の原則(SDP)

安定依存の原則(SDP:Stable Dependencies Principle)

安定する方向に依存せよ。

どういうこと?

  • 変更することを意識して作られた(不安定な)パッケージが、
  • 変更しにくい(安定している)パッケージに依存されてはいけない。
  • パッケージの依存関係はより安定しているパッケージへと向かうべき、ということ。

もう少し詳しく。

  • 「安定している」とは、変更しづらいという意味。
  • 変更しづらいというのは「他のクラスやパッケージから依存されている」(=責任を負っている)パッケージ。
  • つまり、依存されればされるほど変更が難しくなる。
  • 責任を負っているパッケージは、外的な要因によって変更を強いられることがないので「独立している」とも言う。
  • 逆に「不安定」とは、依存ばかりしている(=責任を負わない)クラスやパッケージのことで、依存先が変更されると自分も変更しなければならない(「独立」の反対で「依存」)。

  • で、すべてが安定しろ、といっているわけではない。
  • 不安定なものが安定なものに依存しろ、いっている。

なんで?

  • せっかく変更を意識して作られたパッケージがあっても、何かに依存されただけでモジュールの変更が難しくなってしまう。
  • この原則に従うことで、変更しやすく設計したモジュールがそれよりも変更が難しいモジュールに依存されないことを保証する。

たとえば?

  • SDPに違反しているパッケージ構造。
  • 安定が不安定に依存している。

f:id:asakichy:20090201194202p:image

どうすれば?

  • SDPに違反しているパッケージ構造をDIPによって解消。

f:id:asakichy:20090201194204p:image

テクニックは?

  • OCP
    • システムの上位レベルの設計(アーキテクチャやフレームワーク)は、安定したパッケージに配置されるべき。
    • ただ、アーキテクチャやフレームワークに柔軟性を持たせたい場合もある。
      • 例えばプラグインを付け加えたりしたい場合。
    • そういったときにはOCP、つまり「抽象」を使って解決する。

まとめ

  • 安定した方向に依存せよとはつまり、抽象に依存せよということ。
  • 「安定は抽象で他から依存され、不安定は具体で(実装で)依存する」

関連

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証