2015-08-13 23:54:40 +02:00
|
|
|
---
|
|
|
|
layout: pattern
|
|
|
|
title: Dependency Injection
|
|
|
|
folder: dependency-injection
|
2015-08-15 18:03:05 +02:00
|
|
|
permalink: /patterns/dependency-injection/
|
2019-12-13 21:09:28 +02:00
|
|
|
categories: Creational
|
2015-12-28 15:52:44 +02:00
|
|
|
tags:
|
2019-12-13 21:09:28 +02:00
|
|
|
- Decoupling
|
2015-08-13 23:54:40 +02:00
|
|
|
---
|
|
|
|
|
2016-01-03 21:14:30 +01:00
|
|
|
## Intent
|
|
|
|
Dependency Injection is a software design pattern in which one or
|
2015-08-13 23:54:40 +02:00
|
|
|
more dependencies (or services) are injected, or passed by reference, into a
|
|
|
|
dependent object (or client) and are made part of the client's state. The
|
|
|
|
pattern separates the creation of a client's dependencies from its own
|
|
|
|
behavior, which allows program designs to be loosely coupled and to follow the
|
|
|
|
inversion of control and single responsibility principles.
|
|
|
|
|
2019-12-07 20:01:13 +02:00
|
|
|
## Class diagram
|
2015-08-13 23:54:40 +02:00
|
|
|

|
|
|
|
|
2016-01-03 21:14:30 +01:00
|
|
|
## Applicability
|
|
|
|
Use the Dependency Injection pattern when
|
2015-08-13 23:54:40 +02:00
|
|
|
|
|
|
|
* when you need to remove knowledge of concrete implementation from object
|
2015-08-15 18:03:05 +02:00
|
|
|
* to enable unit testing of classes in isolation using mock objects or stubs
|