文章目錄
- 1. 常用命名規范
- 2. 通過面向介面編程(實作模塊解耦)
- 3.1 正常呼叫,controller呼叫service的實作類
- 3.2 優化1,通過介面`IPersonService `來宣告物件,實作等號左邊解耦
- 3.3 優化2,通過Spring容器注入和自動裝載來實作等號右邊的解耦
1. 常用命名規范
介面定義(IXxx,介面前加I用來區分)
- service層介面命名:com.xxx.service.
IXxxService - Dao層介面命名:com.xxx.dao.
IXxxDao
實作類的定義(XxxImpl,名稱后面加Impl用來區分,放到對應的impl包中)
- service層介面命名:com.xxx.service.impl.
XxxServiceImpl - Dao層介面命名:com.xxx.dao.impl.
XxxDaoImpl
2. 通過面向介面編程(實作模塊解耦)
判斷類之間的耦合關系:最簡單的辦法,就是注釋/洗掉法,將這個類中呼叫的另一個類,全部注釋掉,看看錯誤處有多少,

假設有以下類關系
public interface IPersonService{}//service介面
public class PersonServiceImpl implements IPersonService{} //service介面的實作類
public class PersonController{} //controller呼叫service
3.1 正常呼叫,controller呼叫service的實作類
public class PersonController {
//直接呼叫介面的實作類
PersonServiceImpl personService= new PersonServiceImpl();
public int findPersonByName(Person person){
return personService.findPersonByName(person);
}
}
查看耦合情況,我們將PersonServiceImpl類注釋掉,僅僅只是這幾行代碼,耦合度就高達三處,肯定是不行的,

3.2 優化1,通過介面IPersonService來宣告物件,實作等號左邊解耦
public class PersonController {
//通過呼叫介面來實作等號左邊解耦
IPersonService personService= new PersonServiceImpl();
public int findPersonByName(Person person) throws InterruptedException {
return personService.findPersonByName(person);
}
}
我們再來通過注釋PersonServiceImpl來查看耦合情況,這時候就只有一個耦合了(等號右邊耦合)

3.3 優化2,通過Spring容器注入和自動裝載來實作等號右邊的解耦
public class PersonController {
//通過@Autowired自動裝載,它會從容器中找對應型別的bean將其注入賦值給personService
@Autowired
IPersonService personService;
//就相當于執行了 IPersonService personService= new PersonServiceImpl();
public int findPersonByName(Person person) throws InterruptedException {
return personService.findPersonByName(person);
}
}
繼續通過注釋PersonServiceImpl來查看是否有耦合情況,沒有任何報錯,所以沒有兩個類之間沒有耦合了,當前PersonController和PersonService沒有耦合了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/168086.html
標籤:其他
