ioc概念
控制反轉(
inversion of control
)是乙個重要的物件導向程式設計的法則來削減電腦程式的耦合問題。 它還有乙個名字叫做依賴注入(
dependency injection
)。ioc
不是什麼技術,它是一種設計模式。
例項演示
為了更好的說明
ioc,我為大家舉乙個簡單的例子,如有這樣乙個描述:某公司新成立了乙個專案組,專案組有若干成員和乙個專案組長,專案組成立後第一次開會上,作為專案組長的小李按照慣例首先做了簡短的自我介紹。
根據上述的描述,如果我們寫出如下**和類圖:
"); } } public class team }
具體類圖如下:
上述的**,應該說基本完成了相關的需求,但是仔細考慮之後就會發現,
上述的**是根據具體的場景描述進行的,並沒有進行抽象,這樣就導致我們不能靈活的安排專案組長去做開場,即根據現在的**,開場自我介紹被繫結給了小李而不能安排給其他人
。為了解決上述的問題,我們引入首先引入leader介面,相關**和類圖如下:
"); } } public class team }
具體類圖如下:
雖然上述的**可以讓我們安排給其他成員開場,但是我們可以看出
team
類同時依賴
leader
介面和li
類,並沒有達到我們所期望的
team
僅僅依賴於
leader
介面的目的,如何解決這個問題呢?當然是引入
boss
,由boss
決定具體由誰擔任專案組長。具體類圖和**如下:
"); } } public class team } public class boss }
具體類圖如下:
通過以上**和圖示,我們可以看出,
通過引入老闆類,我們將專案小組和具體由誰擔任專案組長進行解耦
。對應上述例子,我們再來講解一下
ioc,ioc從字面上看分為控制和反轉,控制在上面的例項中就是具體由誰擔任專案組長,而反轉就是將決定誰擔任專案組長轉移到
boss
類中。通俗理解就是將介面的具體實現類(
li)的控制權從呼叫類(
team
)中分離轉交給第三方(
boss
)決定。
深入淺出Spring(一)Spring概述
現在很多的企業級專案中基本上都會用到了spring框架,那麼為什麼會出現spring,spring是什麼?這次的博文我主要為大家簡單介紹一下spring。我們都知道在2003年spring興起之前,企業普遍使用j2ee技術來開發企業級應用,為什麼用j2ee呢?主要原因有以下幾個 1 j a本身的跨平...
深入淺出MySQL筆記(二)
本筆記為學習該書所記,便於複習。包含第三 四章筆記。資料型別與運算子 toc 整數型別 zerofill unsigned auto increment 浮點數型別 定點數型別 decimal m,d show warningsl 位型別bit m hex data datatime timesta...
深入淺出MySQL索引(二)
先搜尋二級索引 非主鍵索引 找到主鍵,再到主鍵索引樹的過程,稱為回表。在下面這個表t中,如果我執行 select from t where k between 3 and 5,需要執行幾次樹的搜尋操作,會掃瞄多少行?create table t id int primary key,k int no...