久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

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

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

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

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

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

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

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

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

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

      好處就在于

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

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

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

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

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

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

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

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

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

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

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

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