Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

DIPについて復習

More than 1 year has passed since last update.

DIPについて復習

by putan
1 / 12

DIPとは

  • みんな大好きSOLIDのD
  • Dependency Inversion Principle
    (依存関係逆転の原則)
  • 具象ではなく抽象に依存すると柔軟なシステムになるよ

どういうこと?


事例1-1

あるアプリケーションがユーティリティを使っている時、
アプリケーションはユーティリティに依存している状態。
dip1.png


事例1-2

この時、ユーティリティのインターフェイスを作って継承し、
アプリケーションからはこのインターフェイスを利用するようにしてみるとこうなる
dip2.png


事例1-3

作ったインターフェイスをアプリケーションのグループに入れ、
アプリケーション側が管理するよーとしてみる
dip3.png


事例1-4

なんということでしょう。
依存の方向が逆になっているではありませんか。
dip4.png


何がいいの?

  • インターフェイスをどちら管理にするかだけで依存の方向を容易に変更できる
  • 依存の方向を単方向に揃えることで、影響範囲や全体の構造がわかりやすくなり、さらに変化に強くなる。

事例2-1

双方向に依存した複雑なシステムも
dip5.png


事例2-2

分かりやすくて柔軟になる!!(適当なイメージです)
dip6.png


まとめ

  • DIPとはSOLIDのDで、抽象に依存するといいよというもの
  • DIPを上手く使うことで依存の方向を管理できる
    • これにより、単方向に依存したシステムを作れば複雑さと戦える

資料

putan
yahoo-japan-corp
Yahoo! JAPAN を運営しています。
https://www.yahoo.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away