principles:dependency_inversion_principle
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
principles:dependency_inversion_principle [2013-04-03 14:22] – [Evidence] christian | principles:dependency_inversion_principle [2021-09-02 12:23] – old revision restored (2021-05-11 21:48) 65.21.179.175 | ||
---|---|---|---|
Line 10: | Line 10: | ||
===== Principle Statement ===== | ===== Principle Statement ===== | ||
- | |||
- | Depend on abstractions.((Robert C. Martin: //Agile Software Development, | ||
Line 21: | Line 19: | ||
===== Strategies ===== | ===== Strategies ===== | ||
- | |||
- | * Apply the [[patterns: | ||
- | * Apply other forms of [[glossary: | ||
- | * Have an '' | ||
- | * Declare only '' | ||
- | |||
- | |||
- | ===== Caveats ===== | ||
- | |||
- | It is normally not helpful to apply DIP to [[patterns: | ||
- | |||
- | Furthermore note that applying [[patterns: | ||
- | |||
- | See section [[#contrary principles]]. | ||
===== Origin ===== | ===== Origin ===== | ||
- | |||
- | Robert C. Martin: // | ||
===== Evidence ===== | ===== Evidence ===== | ||
/* Comment out what is not applicable and explain the rest: */ | /* Comment out what is not applicable and explain the rest: */ | ||
- | + | /* | |
- | /* * [[wiki: | + | * [[wiki: |
- | /* * [[wiki: | + | * [[wiki: |
- | + | | |
- | [[wiki: | + | * [[wiki: |
- | + | */ | |
- | /* * [[wiki: | + | |
===== Relations to Other Principles ===== | ===== Relations to Other Principles ===== | ||
==== Generalizations ==== | ==== Generalizations ==== | ||
- | |||
- | * [[Low Coupling]] (LC): LC aims at reducing the dependencies to other modules. One way to do so is to only depend on abstractions. DIP is about this aspect. | ||
==== Specializations ==== | ==== Specializations ==== | ||
==== Contrary Principles ==== | ==== Contrary Principles ==== | ||
- | |||
- | * [[More Is More Complex]] (MIMC): DIP demands introducing abstractions, | ||
==== Complementary Principles ==== | ==== Complementary Principles ==== | ||
- | * [[Model Principle]] | + | * [[principles: |
+ | * [[principles: | ||
+ | * [[principles: | ||
+ | * [[principles:Encapsulate the Concept that Varies]] | ||
==== Principle Collections ==== | ==== Principle Collections ==== | ||
Line 74: | Line 53: | ||
{{page> | {{page> | ||
- | ===== Examples | + | ===== Example |
Line 85: | Line 64: | ||
===== Further Reading ===== | ===== Further Reading ===== | ||
- | * Robert C. Martin: // | ||
- | * Robert C. Martin: //Agile Software Development, | ||
- | * [[http:// | ||
- | * [[wiki> | ||
- | * [[wp> | ||
principles/dependency_inversion_principle.txt · Last modified: 2021-10-18 21:23 by christian