欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Laravel控制反轉(zhuǎn)的好處是什么

          在Laravel中,控制反轉(zhuǎn)的好處是能夠借助IOC容器將具有依賴的模塊或者對象進(jìn)行解耦,如果指定的服務(wù)不合適使用時,不需要修改開發(fā)者定義的方法就可以通過指定的接口找一個合適的服務(wù)進(jìn)行替換。

          Laravel控制反轉(zhuǎn)的好處是什么

          本文操作環(huán)境:Windows10系統(tǒng)、Laravel6版、Dell G3電腦。

          Laravel控制反轉(zhuǎn)的好處是什么

          laravel 自己本身就是一個IOC容器,也叫服務(wù)容器,

          服務(wù)容器就是管理類的依賴和執(zhí)行依賴注入的工具

          控制反轉(zhuǎn)的作用就是實現(xiàn)模塊或?qū)ο蟮慕怦?,通過借助第三方將具有依賴的模塊或?qū)ο筮M(jìn)行解耦,而這個第三方,就是IOC容器。

          容器嘛,就是儲存了需要的服務(wù)在里面,方便開發(fā)者調(diào)用。所以,Laravel為了方便管理這些服務(wù)(實現(xiàn)解耦)決定,不再直接調(diào)用這些服務(wù),例如開發(fā)者定義了一個方法1,原本和服務(wù)B綁定,通過服務(wù)B實現(xiàn),現(xiàn)在不要B了,而是定義了一個接口A,通過接口A去實現(xiàn)這個服務(wù)B。

          在這個過程中,服務(wù)B本來可以控制開發(fā)者的某個功能,現(xiàn)在開發(fā)者不直接調(diào)用這個服務(wù)了,而是換成了接口A,所以,該服務(wù)B對該項功能失去了控制權(quán),而接口A獲得了該功能的控制權(quán),這個過程就叫做控制反轉(zhuǎn)

          好處就在于

          如果該服務(wù)B不合適了,那么接口A可以找一個適合需求的其他服務(wù)替換上去,不用修改開發(fā)者的方法1,至于你接口A用的啥服務(wù),我這方法也不用管。這個接口A要實現(xiàn)服務(wù)B,那實現(xiàn)服務(wù)B的類就得繼承這個接口A,在這個B類中實現(xiàn)接口A定義的抽象方法。

          這個接口A 也可以被看作該項服務(wù)的提供者。laravel中有多個服務(wù)提供者,他們組成相應(yīng)的組件,多個組件形成這樣一個laravel框架

          既然接口A有了,接口BCDE那么多,要方便管理,就得給規(guī)定服務(wù)提供者的格式,方法參數(shù),來約束他們的規(guī)則,這個概念就叫做:契約

          契約的好處:就在于,只要滿足約束規(guī)則,就可以按需求隨意替換,

          **Facades,**我們可以叫做門面,其實就是一組靜態(tài)接口或者代理,能讓開發(fā)者簡單的訪問綁定到容器中的各種服務(wù)。Laravel 里面自帶了一些 Facades,如Cache等。一個 Facade 就是一個類,使用這個類可以訪問到來自容器里的一個對象,這個功能就是在 Facade 類里面定義的。Laravel 的 Facades 還有任何你自己定義的 Facades,都會去繼承 Facade 這個類。通俗來說,你在類上方使用的use xxxx 都屬于門面,詳情看鏈接:https://www.jianshu.com/p/a96715975d4e

          那么,如果我要實現(xiàn)的服務(wù)這里沒有怎么辦,那就需要將新來的服務(wù)進(jìn)行注冊和初始化,只有注冊到容器中了,容器才能調(diào)用它,這個工作由服務(wù)提供者來實現(xiàn)?;貧w正題

          那依賴注入是什么:開發(fā)者的這個方法1,定義了一個中間商接口A,這個接口A可以以參數(shù)形式,注入方法1所屬類1的構(gòu)造方法中 儲存起來,這個過程就叫做依賴注入。

          只要不是由內(nèi)部生產(chǎn)(比如初始化、構(gòu)造函數(shù) __construct 中通過工廠方法、自行手動 new 的),而是由外部以參數(shù)或其他形式注入的,都屬于依賴注入

          我們要如何做依賴注入呢?很簡單: $biller = new StripeBiller(new SmsNotifier);

          這就是一個依賴注入。賬單類 StripeBiller 不用考慮如何通知用戶,我們直接傳遞給它一個通知實現(xiàn)類 SmsNotifier

          的實例。從代碼角度來說,這可能只是個微小的變動,但這種設(shè)計模式的引入,絕對會使你的整個應(yīng)用架構(gòu)煥然一新:因為明確指定了類的職責(zé)邊界,實現(xiàn)了不同層和服務(wù)之間的解耦,你的代碼變得更加容易維護(hù);此外,從面向接口編程的角度來看,代碼變得更加容易測試,你只需通過模擬注入依賴即可,不同類之間的測試完全可以隔離開來

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號