26 lines
813 B
Plaintext
26 lines
813 B
Plaintext
|
Dependency Injection (DI) involves passing (injecting) one or more
|
||
|
dependencies (or services) to a dependent object (or client) which
|
||
|
become part of the client's state. It is like the Strategy Pattern,
|
||
|
except the strategy is set once, at construction. DI enables loosely
|
||
|
coupled designs, which are easier to maintain and test.
|
||
|
|
||
|
Features:
|
||
|
|
||
|
- None run-time overhead;
|
||
|
- Compiles fast;
|
||
|
- Gives short diagnostic messages;
|
||
|
- Is non-intrusive;
|
||
|
- Reduces boilerplate code;
|
||
|
- Reduces testing effort;
|
||
|
- Gives better control of what and how is created;
|
||
|
- Gives better understanding about objects hierarchy.
|
||
|
|
||
|
Design goals:
|
||
|
|
||
|
- Be as fast as possible;
|
||
|
- Compile as fast as possible;
|
||
|
- Give short and intuitive error messages;
|
||
|
- Guarantee object creation at compile-time;
|
||
|
- Be as non-intrusive as possible;
|
||
|
- Be easy to extend.
|