設計原則之依賴反轉原則
動機:當類裏面含有屬性類,如果直接寫類,代碼太死,可以考慮將屬性類變成接口,方便擴展。
結論:高級類不直接使用低級類,使用接口作爲抽象層。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();
}
}