IOC設計原則和核心思想

2021-09-07 04:31:57 字數 758 閱讀 9227

控制反轉是一種設計原則,而依賴注入di是它的一種實現方式;

技術描述:

class a中用到了class b的物件b,一般情況下,需要在a的**中顯式的new乙個b的物件。

採用依賴注入技術之後,a的**只需要定義乙個私有的b物件,不需要直接new來獲得這個物件,而是通過相關的容器控制程式來將b物件在外部new出來並注入到a類裡的引用中。而具體獲取的方法、物件被獲取時的狀態由配置檔案(如xml)來指定。

這樣就解決了依賴方不需要主動去指定引用那乙個具體的依賴,而是取決於業務實現,在應用程式的層面去決定具體依賴那乙個類或者元件,將依賴的控制權交給了容器,程式層面去控制,我服務消費者(需要呼叫服務的類)不需要去指定具體依賴哪個類,而是靠xml配置檔案的方式去解耦,這也符合了面向介面程式設計的基本原則,我不需要去關注具體依賴哪個類,方便服務實現的切換,我想最早的場景,就是手動去修改伺服器的xml檔案,而避免了去修改**,再重新編譯,部署的尷尬;

演變歷程:

具體的文章大家可以去看下這位博主的文章:很值得推薦,相比許多侃侃而談的文章,這篇算是真知灼見了!

ioc 的常見實現方式:

構造注入;屬性注入,和自動裝配@autowired

物件導向核心思想 518原則

1.需求分析的方法 518 5w,1h,8c 5w what,who,where,when,why 1h how 8c performace效能,const成本,time時間,reliability可靠性,security安全性,compliance合規性,technology技術性,compati...

MapReduce核心思想

mapreduce核心程式設計思想,如圖1 1所示。圖1 1 mapreduce核心程式設計思想 1 分布式的運算程式往往需要分成至少 2個階段。2 第乙個階段的 maptask 併發例項,完全並行執行,互不相干。3 第二個階段的 reducetask 併發例項互不相干,但是他們的資料依賴於上乙個階...

Kafka核心思想

kafka是2010年12月份開源的專案,採用scala語言編寫,使用了多種效率優化機制,整體架構比較新穎 push pull 更適合異構集群。設計目標 1 資料在磁碟上的訪問代價為o 1 2 高吞吐率,在普通的伺服器上每秒也能處理幾十萬條訊息 3 分布式架構,能夠對訊息分割槽 4 支援將資料並行的...