1. 程式人生 > >家庭-養老院模型理解IOC和DI

家庭-養老院模型理解IOC和DI

控制反轉 IOC

1. 概念

應用內部不負責依賴物件的建立和維護, 由第三方負責, 這樣控制權就由應用內部轉移到外部容器, 控制權的轉移就是所謂的反轉.

2. 比喻

有一戶家庭(應用)有個老人(依賴物件), 家庭需要負責老人的吃喝住行(依賴物件的建立和維護), 但因家裡的年輕人需要上班賺錢, 沒有時間負責老人的吃喝住行, 這時就想了辦法, 就是將老人送到養老院(外部容器)裡, 讓養老院來負責老人的吃喝住行, 這就是控制反轉, 控制權就是誰來負責老人的吃喝住行, 控制權本來是家庭的, 但是現在變成了養老院的了, 發生了轉移, 這就是所謂的控制反轉.

 

依賴注入 DI

1. 概念

程式執行期間, 由外部容器動態地將依賴物件注入到元件中, 通常通過構造器或setter方法實現.

2. 比喻

家庭中大事發生時, 一般來說都需要詢問長輩的意見, 即應用需要呼叫依賴物件, 這時候就要有人將老人接回家中, 不用這麼麻煩, 養老院會幫你把家裡的老人給送回到家中(依賴注入), 可能通過專車接送(構造器)也可能通過飛機接送(setter方法), 哈哈, 這要有外部容器的規矩決定(配置).