依赖倒置原则(Dependence
1、依赖倒置原则的定义
2、依赖倒置原则与开闭原则的关系
“开-闭”原则与依赖倒转原则是目标和手段的关系。如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段。如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则,依赖倒转原则是对"抽象化"的最好规范。里氏代换原则是依赖倒转原则的基础,依赖倒转原则是里氏代换原则的重要补充。
- //Dependency
Inversion Principle - Bad example - class
Worker { -
public void work() { -
// ....working -
} - }
-
- class
Manager { -
Worker m_worker; -
-
public void setWorker(Worker w) { -
m_worker=w; -
} -
-
public void manage() { -
m_worker.work(); -
} - }
-
- class
SuperWorker { -
public void work() { -
//.... working much more -
} - }
//Dependency Inversion Principle - Bad example class Worker { public void work() { // ....working } } class Manager { Worker m_worker; public void setWorker(Worker w) { m_worker=w; } public void manage() { m_worker.work(); } } class SuperWorker { public void work() { //.... working much more } }
- //Dependency
Inversion Principle - Good example - interface
IWorker { -
public void work(); - }
-
- class
Worker implements IWorker{ -
public void work() { -
// ....working -
} - }
-
- class
SuperWorker implements IWorker{ -
public void work() { -
//.... working much more -
} - }
-
- class
Manager { -
IWorker m_worker; -
-
public void setWorker(IWorker w) { -
m_worker=w; -
} -
public void manage() { -
m_worker.work(); -
} - }
//Dependency Inversion Principle - Good example interface IWorker { public void work(); } class Worker implements IWorker{ public void work() { // ....working } } class SuperWorker implements IWorker{ public void work() { //.... working much more } } class Manager { IWorker m_worker; public void setWorker(IWorker w) { m_worker=w; } public void manage() { m_worker.work(); } }
4、总结