设计原则之依赖反转原则
动机:当类里面含有属性类,如果直接写类,代码太死,可以考虑将属性类变成接口,方便扩展。
结论:高级类不直接使用低级类,使用接口作为抽象层。Creational Design Patterns可以帮助我们实现依赖反转原则,比如工厂模式,抽象工厂模式,原型模式。
Bad Example:
缺点:
1、当出现一个新的工人superWorker,不得不修改Manager的源代码
2、Manger里面已经存在的代码也会被影响,比如方法里面用到Worker
class Worker {
public void work() {
//working
}
}
class Manager{
Work worker;
public void setWorker(Worker w) {
worker = w;
}
public void manage() {
worker.work();
}
}
class SuperWorker {
public void work() {
//.... working much more
}
}
Good Example:
好处:
1、添加superWorker不需要修改Manager类
2、对Manager最小的修改风险
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 worker;
public void setWorker(IWorker w) {
worker = w;
}
public void manage() {
worker.work();
}
}