Updated 23 November 2018
Dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service). An injection is the passing of a dependency to a dependent object (a client) that would use it. Dependency injection allows a client to remove all knowledge of a concrete implementation that it needs to use. Dependency Injection is a great way to reduce tight coupling between software components.
Let’s take an example of a dependency is when one of the objects depends on the concrete implementation of another object.
1 2 3 4 5 6 7 |
class Tea { public Tea() { //When we use Tea, we need to create water instance Water water = new Water(); water.tea(); } } |
In this example, we have a class called Tea which uses another class or interface called Water in Tea class. Tea depends upon the class or interface Water. We can not use Tea without Water. When we create Tea we also need to create Water. This means Tea depends upon the class or interface Water.
There is three way to inject dependency in class:
1 2 3 4 5 6 7 |
class Tea { Water water; public Tea(Water water) { this.water=water water.tea(); } } |
1 2 3 4 5 6 7 8 9 |
class Tea { Water water; public Tea() { } public initializeWater(Water water){ this.water=water } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
class Tea implement GetWater{ Water water; @override public getWater(Water water) { this.water=water } } interface GetWater{ void getWater(Water water); } |
I tried to describe Dependency Injection in a simple way. In my next article, I will try to explain the benefits of dependency injection and its relation to Dagger 2.
If you have more details or questions, you can reply to the received confirmation email.
Back to Home
Be the first to comment.