依賴注入的3種方式 Service層和Dao層真的有必要每個類都加上接口嗎?
Service層和Dao層真的有必要每個類都加上接口嗎?這主要取決于您的項目:例如,如果項目中使用了hibernate,以后可能會切換到mybatis,那么Dao需要使用這個接口。這不會影響上層代碼的
Service層和Dao層真的有必要每個類都加上接口嗎?
這主要取決于您的項目:
例如,如果項目中使用了hibernate,以后可能會切換到mybatis,那么Dao需要使用這個接口。這不會影響上層代碼的更改。
另一個例子是,項目是一個單一的應用程序。任何代碼修改都需要重新編譯整個項目,因此不需要接口。如果項目是由模塊編譯和部署的,那么可以使用接口解耦。假設(shè)修改了Dao,只需要重新編譯和部署Dao模塊,而不影響上層模塊。
此外,如果項目團隊中有許多新手,簡單的代碼結(jié)構(gòu)可能更合適。復雜項目結(jié)構(gòu)的學習成本較高。
如果工程進度非常緊迫,我們可以用簡單粗暴的方式用經(jīng)濟成本來說明原因。
使用接口的成本是不使用接口的成本(包括后續(xù)維護成本)。
如果項目變化很大,部署了模塊,項目不急,使用接口的成本比不使用接口的成本低,雖然早期不使用接口似乎更簡單;相反,不使用接口的成本低,而且連框架都不能用~
畢竟工具是提高效率的,那你為什么不能和自己相處呢
自動注入到底比new好在哪?
控制反轉(zhuǎn)和容器IOC只能看作是一種編程思想。在理想狀態(tài)下,可以實現(xiàn)自動注射和生命周期管理。但是,在實際的發(fā)展中,我個人覺得有時不如新的方便。我主要遇到以下問題:
1。編寫大量的配置和構(gòu)造函數(shù)比編寫新的更麻煩,特別是對于某些函數(shù),項目只使用一次。原來,new會立即完成,但是如果你想使用依賴注入,你仍然需要編寫配置
2。當需要注入更多的類時,構(gòu)造函數(shù)就像老婦人的裹尸布一樣臭,一樣長。關(guān)鍵是以前用過的一些類現(xiàn)在不用了,你要手動清理構(gòu)造函數(shù),這比new要麻煩多了
3。這也是最關(guān)鍵的一點,有時項目的復雜性很復雜,會遇到循環(huán)注入的問題。也就是說,A依賴B,B依賴C,C依賴A,這種情況說明架構(gòu)的存在是不合理的。在這一點上,您可以重構(gòu)系統(tǒng),也可以不直接使用依賴注入來解決它。]總之,依賴注入只是一種編程思想,具有一些高級特性。它不是萬能的。它存在的意義是脫鉤。從宏觀上講,就是要解決多人共同開發(fā)一個項目時,各自獨立的模塊,減少相互之間的依賴和干擾。從微觀的角度看,有幾個類是密切相關(guān)的。雖然文件是獨立的,但是功能是集成的。在這個時候,脫鉤是沒有意義的。為什么不是新的?
因此,我個人理解依賴注入與引擎是一樣的。發(fā)動機由幾個主要部件組成。這些組件之間是解耦的,可以通過依賴注入來實現(xiàn)。對于單個組件的內(nèi)部部件和螺釘,必須使用依賴注入來實現(xiàn)它們。這比收益多一點。使用new來實現(xiàn)它們要方便得多。。。[挑鼻子][挑鼻子][挑鼻子][挑鼻子][挑鼻子]