任何你使用的現代框架,都可能嚴重依賴於依賴注入。但是你知道依賴注入代表的真正含義嗎?或者換乙個更好的角度 - 你知道依賴注入不是什麼嗎?
雖然每個現代框架都附帶依賴容器 — 乙個用於構建物件的大盒子 — 但這並不能保證你會按照預期的方式使用依賴注入模式。
容器讓依賴項更加容易注入到類中,但是它也可能被濫用。
一種濫用服務容器的方式是從容器中拉取物件,而不是注入到當前的上下文中。該模式稱之為服務定位器模式,它與依賴注入相反。
class mycontroller}
服務定位器模式向容器請求特定的物件。這將導致服務從乙個難以測試的點拉取,並且,對於外部而言這就像乙個黑匣子:除非你檢視全部相關**,否則你將無法了解 mycontroller 所依賴的外部型別。
一些框架提倡這種用法,因為在專案開始的時候它將變得簡單快捷。一旦在容器中註冊了成百上千個類,使用服務定位器模式將會導致混亂。而使用依賴注入將解決該問題。
接下來是一些更積極的方面:以一種更好的方式使用容器。
當依賴注入被正確使用時,外部上下文 (在許多情況下為容器) 可以控制注入到類中的具體依賴項。 這意味著同乙個物件可以被注入到其他幾個上下文中,而不需要知道這些上下文是「單例」還是「依賴共享」。
雖然依賴共享是有用且強大的,但它並不是依賴注入的真正目的,而只是乙個有益的***。
最後,另乙個有用的特性,同樣不是依賴注入的內容:自動裝配。
為了給予開發人員更多的靈活性,一些容器允許智慧型的、自動的確定類的定義。這意味著您不必手動描述應該如何構造每個類。這些容器將掃瞄您的**,並通過檢視型別提示和文件塊來確定需要哪些依賴項。
這裡發生了很多神奇的事情,但是自動裝配對於應用程式的快速開發來說是乙個非常有用的工具。
如果您現在還想重溫一下什麼是依賴注入的基礎知識。你可以去閱讀它這裡.
以上內容希望幫助到大家,很多phper在高階的時候總會遇到一些問題和瓶頸,業務**寫多了沒有方向感,不知道該從那裡入手去提公升,對此我整理了一些資料,包括但不限於:分布式架構、高可擴充套件、高效能、高併發、伺服器效能調優、tp6,lar**el,yii2,redis,swoole、swoft、kafka、mysql優化、shell指令碼、docker、微服務、nginx等多個知識點高階高階乾貨需要的可以免費分享給大家,需要的可以加入我的官方群點選此處。
依賴注入與耦合
依賴注入與耦合 耦合是程式元件間的聯絡。耦合大體上分為兩類 建立型耦合與注入型耦合。建立型耦合又分為組成型耦合與區域性使用型耦合。組成型耦合 耦合物件為主體物件的組成部分 區域性使用型耦合 耦合物件在主體中臨時建立和使用 注入型耦合分為三類 1 注入物件在外部建立,注入到主體物件 目的是依賴的靈活性...
Spring 與依賴注入
依賴注入是反轉控制的一種。什麼是反轉控制?我們平常寫程式,需要什麼物件,就在 裡顯式地new乙個出來然後使用,這是我們自己去控制物件的生成。而反轉控制是讓spring 或者類似的其他工具 幫忙去生成我們需要的物件,也就是說物件的生成的控制權交給spring了。當然,spring需要依據一定的規則去生...
IOC與依賴注入
spring的核心思想是ioc和aop,ioc 控制反轉,是乙個重要的物件導向程式設計的法則來消減電腦程式的耦合問題,控制反轉一般分為兩種型別,依賴注入和依賴查詢,依賴什麼?為什麼需要依賴?注入什麼?控制什麼?依賴注入和控制反轉是一樣的概念嗎?依賴注入和控制反轉,目的是為了使類與類之間解耦合,提高系...