W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
依賴倒置原則(Dependency Inversion Principle, DIP)是面向?qū)ο笤O(shè)計原則之一,它是SOLID原則中的"D"。依賴倒置原則的核心思想是高層策略性業(yè)務(wù)規(guī)則不應(yīng)該依賴于低層的具體實現(xiàn)細(xì)節(jié),而兩者都應(yīng)該依賴于抽象。
依賴倒置原則主要包含兩個基本點:
依賴倒置原則的優(yōu)點包括:
在實際應(yīng)用中,依賴倒置原則可以通過以下方式實現(xiàn):
依賴倒置原則是實現(xiàn)開閉原則(Open/Closed Principle)的基礎(chǔ),即軟件實體應(yīng)該對擴展開放,對修改關(guān)閉。通過依賴倒置,我們可以更容易地擴展系統(tǒng)功能,而不需要修改現(xiàn)有的代碼。
下面來看一個簡單的Java代碼示例,讓我們更好的理解依賴倒置原則的應(yīng)用:
首先,我們定義一個抽象接口,表示一個可以發(fā)送消息的系統(tǒng):
public interface MessageService {
void sendMessage(String message);
}
然后,我們創(chuàng)建一個具體的發(fā)送服務(wù)實現(xiàn)這個接口:
public class EmailService implements MessageService {
@Override
public void sendMessage(String message) {
System.out.println("Sending email: " + message);
}
}
接下來,我們有一個高層策略類,它使用MessageService
接口而不是具體的EmailService
類:
public class NotificationService {
private MessageService messageService;
// 構(gòu)造函數(shù)注入依賴
public NotificationService(MessageService messageService) {
this.messageService = messageService;
}
public void notifyUser(String message) {
// 依賴于抽象,而不是具體實現(xiàn)
messageService.sendMessage(message);
}
}
最后,我們可以在客戶端代碼中使用這個系統(tǒng):
public class Client {
public static void main(String[] args) {
// 創(chuàng)建具體的消息服務(wù)
MessageService emailService = new EmailService();
// 將具體的消息服務(wù)注入到高層策略中
NotificationService notificationService = new NotificationService(emailService);
// 使用高層策略發(fā)送消息
notificationService.notifyUser("Hello, this is a test email.");
}
}
在這個例子中,NotificationService
類是一個高層策略類,它依賴于MessageService
接口的抽象。我們通過構(gòu)造函數(shù)注入具體的消息服務(wù)EmailService
。這樣,如果將來我們需要更換消息服務(wù)的實現(xiàn)(比如使用SmsService
),我們只需要創(chuàng)建一個新的實現(xiàn)類并注入到NotificationService
中,而不需要修改NotificationService
的代碼。這就體現(xiàn)了依賴倒置原則的精神。依賴倒置原則接口抽象類
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: