Hello
Dependency Inversion Principle April 17, 2017
Slide 3
Slide 3 text
What’s dependency?
Dependency Inversion Principle April 17, 2017
Slide 4
Slide 4 text
and what’s inversion?
Dependency Inversion Principle April 17, 2017
Slide 5
Slide 5 text
and again what’s principle?
Dependency Inversion Principle April 17, 2017
Slide 6
Slide 6 text
Let’s hear the story
Dependency Inversion Principle April 17, 2017
Slide 7
Slide 7 text
Dependency Inversion Principle April 17, 2017
Slide 8
Slide 8 text
So, Dependency Inversion Principle is…
Dependency Inversion Principle April 17, 2017
Slide 9
Slide 9 text
Dependency Inversion Principle April 17, 2017
“High level objects should not
depend on low level implementations”
Slide 10
Slide 10 text
Why using Dependency Inversion Principle?
Dependency Inversion Principle April 17, 2017
Slide 11
Slide 11 text
Implement Dependency Inversion
Principle and code example
Dependency Inversion Principle April 17, 2017
Slide 12
Slide 12 text
Dependency Inversion Principle April 17, 2017
class PasswordReminder {
private $dbConnection;
public function __construct(MySQLConnection $dbConnection) {
$this->dbConnection = $dbConnection;
}
}
Slide 13
Slide 13 text
Dependency Inversion Principle April 17, 2017
class PasswordReminder {
private $dbConnection;
public function __construct(MySQLConnection $dbConnection) {
$this->dbConnection = $dbConnection;
}
}
Low Level
High Level
Slide 14
Slide 14 text
But that’s the bad example
Dependency Inversion Principle April 17, 2017
Slide 15
Slide 15 text
“Depend on Abstraction not on concretions”
Dependency Inversion Principle April 17, 2017
Slide 16
Slide 16 text
Dependency Inversion Principle April 17, 2017
class PasswordReminder {
private $dbConnection;
public function __construct(MySQLConnection $dbConnection) {
$this->dbConnection = $dbConnection;
}
}
Low Level
High Level
Slide 17
Slide 17 text
PasswordReminder class is being forced to
depend on the MySQLConnection class.
Dependency Inversion Principle April 17, 2017
Slide 18
Slide 18 text
Your class should not care
what class you’ll use ✌
Dependency Inversion Principle April 17, 2017
Slide 19
Slide 19 text
Dependency Inversion Principle April 17, 2017
interface DBConnectionInterface {
public function connect();
}
Slide 20
Slide 20 text
The good example
Dependency Inversion Principle April 17, 2017
Slide 21
Slide 21 text
Dependency Inversion Principle April 17, 2017
class MySQLConnection implements DBConnectionInterface {
public function connect() {
return "Database connection";
}
}
class PasswordReminder {
private $dbConnection;
public function __construct(DBConnectionInterface $dbConnection) {
$this->dbConnection = $dbConnection;
}
}
Slide 22
Slide 22 text
“Depend on Abstraction not on concretions”
Dependency Inversion Principle April 17, 2017
Slide 23
Slide 23 text
Conclusion
Dependency Inversion Principle April 17, 2017
Slide 24
Slide 24 text
“Your code which can easily be extended,
modified, tested, and refactored without
any problems. ”
Dependency Inversion Principle April 17, 2017
Slide 25
Slide 25 text
Thank you!
Dependency Inversion Principle April 17, 2017