原則
A.高層次的模塊不應該依賴于低層次的模塊,他們都應該依賴于抽象。
B.抽象不應該依賴于具體實現,具體實現應該依賴于抽象
概念
依賴倒置原則(Dependence Inversion Principle)是程序要依賴于抽象接口,不要依賴于具體實現。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。
依賴倒置有三種方式來實現
1、通過構造函數傳遞依賴對象; 比如在構造函數中的需要傳遞的參數是抽象類或接口的方式實現。
如代碼
public class Notification
{
private IMessageService _iMessageService;
public Notification(IMessageService _messageService)
{
this._iMessageService = _messageService;
}
public void PromotionalNotification()
{
_iMessageService.SendMessage();
}
}
2、通過setter方法傳遞依賴對象; 即在我們設置的setXXX方法中的參數為抽象類或接口,來實現傳遞依賴對象。
如代碼
public interface IDriver{
public void setCar(ICar car);
public void driver();
}
public class Driver implements IDriver{
private ICar car;
public void setCar(ICar car){
this.car=car;
}
public void driver(){
this.car.run();
}
}
3、接口聲明實現依賴對象,也叫接口注入;
即在函數聲明中參數為抽象類或接口,來實現傳遞依賴對象,從而達到直接使用依賴對象的目的。
注:項目越大使用該原則好處越大