控制反轉是物件導向程式設計中的一種設計原則,可以用來減少電腦程式碼之間的耦合度,還可以透過控制反轉,讓物件在被創建的時候,由一個調控系統內所有物件的外界實體將其所依賴的物件的參考傳遞給它。
控制反轉(Inversion of Control,縮寫為IoC),是物件導向程式設計中的一種設計原則,可以用來減少電腦程式碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫做「依賴查找」(Dependency Lookup)。透過控制反轉,物件在被創建的時候,由一個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。
控制反轉實作策略
IoC是一個很大的概念,可以用不同的方式實作。其主要形式有兩種:
依賴查找:容器提供回調介面和上下文條件給元件。 EJB和Apache Avalon 都使用這種方式。這樣一來,元件就必須使用容器提供的API來尋找資源和協作對象,僅有的控制反轉只體現在那些回呼方法上(也就是上面所說的類型1):容器將呼叫這些回呼方法,從而讓應用程式碼獲得相關資源。
依賴注入:元件不做定位查詢,只提供普通的Java方法讓容器去決定依賴關係。容器全權負責的元件的組裝,它會把符合依賴關係的物件經由JavaBean屬性或建構函式傳遞給需要的物件。透過JavaBean屬性注射依賴關係的做法稱為設值方法注入(Setter Injection);將依賴關係作為建構子參數傳入的做法稱為建構器注入(Constructor Injection)
##控制反轉實作方法
實作資料存取層資料存取層有兩個目標。第一是將資料庫引擎從應用程式中抽象化出來,這樣就可以隨時改變資料庫—比方說,從微軟SQL變成Oracle。不過在實務上很少會這麼做,也沒有足夠的理由和能力去透過使用實現資料存取層而對現有的應用進行重構。 第二個目標是將資料模型從資料庫實作中抽象化。這使得資料庫或程式碼開源根據需要改變,同時只會影響主應用的一小部分——資料存取層。這個目標是值得的,為了在現有系統中實現它進行必要的重構。 模組與介面重構依賴注入背後的一個核心思想是單一功能原則(single responsibility principle)。此原則指出,每個物件應該有一個特定的目的,而應用需要利用此目的的不同部分應使用適當的物件。這意味著這些物件在系統的任何地方都可以重複使用。但在現有系統裡面很多時候都不是這樣的。 隨時增加單元測試把功能封裝到整個物件裡面會導致自動測試困難或不可能。將模組和介面與特定物件隔離,以這種方式重構可以執行更先進的單元測試。按照後面再增加測試的想法繼續重構模組是誘惑力的,但這是錯誤的。 使用服務定位器而不是建構注入實現控制反轉不只一種方法。最常見的辦法是使用建構注入,這需要在物件首次被創建時提供所有的軟體依賴。然而,構造注入要假設整個系統都使用這個模式,這意味著整個系統必須同時進行重構。這很困難、有風險,且耗時。 推薦教學:《PHP》
以上是控制反轉是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器