本文參考的博文
正轉:
? 要講反轉,先得說清楚什么是正轉。
? 要說清楚什么是正轉,還要搞清楚什么是控制。
? 那么控制是什么?當然是一個角色A對另外一個角色B的行為和數據的按照A的原則或是意志進行的有目的行的干涉和施加影響,從而使得符合或是達到A的控制目的。也就是說A控制了B或是B的行為由A來控制。
? 那么誰是A誰是B?在java中一切都是對象,如果一個對象需要另外一個對象的功能,那么這個對象就是A,另一個對象就是B。那么具體的A是怎么控制B的?首先A要創建一個對象B并且對其引用,還要獲取或是設置B的對象屬性、調用B的方法,有時候也需要銷毀B,也就是說B對象的整個從產生到使用再到銷毀都是由A來完成!那為什么由A來完成呢?因為A需要B,A依賴B,B始終難逃A的控制,這帶來的后果就是嚴重耦合,對程序的維護和擴展的影響不言而喻。總結:在A使用B的過程中,A都是親力親為,十分主動,我們知道太主動會傷了自己影響大局。那能不能化主動為被動呢? 當然可以,請下看。
反轉
? 如果A將對B的控制權或是管理權交出來給別人,讓更專業的人去管理B,自己按需索取B,這不是更好?當A需要B的時候,把B自動扔給A,化主動為被動,以前主動索取,現在是被動接受,只使用不做維護。那么由主動變被動的過程怎么實現呢?這就是Spring的要做的,用好萊塢法則就是:你不要來找我,我回去找你。以前是我得主動去找你,現在你等著就行,我來找你,這個就是控制反轉的概念,這個過程由spring來實現。