控制反轉 php(在spring框架中,什么是控制反轉,什么是依賴注入)

    本文主要介紹控制反轉php(在spring框架中 什么是控制反轉 什么是依賴注入),下面一起看看控制反轉php(在spring框架中 什么是控制反轉 什么是依賴注入)相關資訊。
    先看一個例子:
    ?phpclass a { public $ b;公共$ c;公共函數a{//todo }公共函數方法{ $ this-b = new b;$ this-c = new c;$ this-b-method;$ this-c-method;//todo } } class b { public function b{//todo } public function method{//todo echo ;b ;} }類{公共函數c{//todo }公共函數方法{//todo echo ;c ;} } $ a = new a;$ a-method;?上面的代碼,我們可以很容易理解一句話:
    a類依賴于b類和c類。
    也就是說,在以后的開發過程中,如果我們要修改b類或者c類,一旦函數被重命名,函數參數個數發生變化,甚至整個類結構的調整,我們就要對a類進行相應的調整,a類的獨立性就喪失了,這在開發過程中是非常不方便的,也就是我們所說的 牽一發而動全身。如果兩個班分別由兩個人寫,這時候往往會產生矛盾。。。
    萬一真的要改b類和c類,有什么辦法可以不改或者盡量少改a類的代碼?這里使用了控制反轉。
    高層模塊不要依賴底層模塊,兩者都要依賴抽象。
    控制反轉(ioc)是一種思想,依賴注入(di)是實現這種思想的。
    第一種方法叫做構造函數注入(這種方法也不推薦,但總比沒有強)。
    a類{公共$ b;公共$ c;公共函數a($b,$ c){ $ this-b = $ b;$ this-c = $ c;}公共函數方法{ $ this-b-method;$ this-c-method;}}客戶端類寫道:
    $ a =新a(新b、新c);$ a-method;a類的構造函數依賴于b類和c類,通過傳入構造函數的參數,至少達到了一個目的,就是b類對象和c類對象的創建都被移到了a類之外,所以一旦b類和c類發生變化,a類不需要修改,只需要在class client里面修改就可以了。
    如果有一天,我們需要擴展b類。做b類的兩個子類。
    class b { public function b{//todo }公共函數方法{//todo echo ;b ;} }類擴展b { public function b1{//todo } public function method{ echo ;b1 ;} }類b2擴展b {公共函數b2{//todo }公共函數方法{ echo b2 ;}}也很簡單,所以client類寫:
    $ a =新a(新b2、新c);$ a-method;因此,a類不 不必關心b類有什么子類,只需要關心它們在client類中。
    第二種方法稱為工廠模式注入(推薦)
    類工廠{公共函數工廠{//todo }公共函數創建($ s){開關($ s){ case ;b ;: { return new b;打破;}案例 c : { return new c;打破;} default : { return null;打破;}}}}我們的a類代碼改為:
    a類{公共$ b;公共$ c;公共函數a{//todo }公共函數方法{ $ f = new factory;$ this-b = $ f-create( ;b ;);$ this-c = $ f-create( ;c );$ this-b-method;$ this-c-method;//todo}}實際上已經解耦了一小部分。至少如果b類和c類的構造函數發生變化,比如修改函數參數,我們只需要改變工廠類。
    抽象不要依賴細節,細節要依賴抽象。
    抽象出b類和c類中的方法,做一個接口。
    接口方法{公共函數方法;}這樣,a類中的$b變量和$c變量就不再是具體變量,而是抽象變量。直到奔跑的那一刻,我才明白。;我不知道他們的方法是如何實現的。
    class b實現i method { public function b{//todo } public function method{//todo echo ;b ;} }類實現i method { public function c{//todo } public function method{//todo echo ;c ;}}總結幾點:
    1.我們將類a中的類b對象和類c對象的創建移到了類a之外。
    2.原來a類依賴b類和c類,現在變成了依賴工廠,工廠依賴b和c。
    標簽:
    依賴方法抽象
    了解更多控制反轉php(在spring框架中 什么是控制反轉 什么是依賴注入)相關內容請關注本站點。

    電腦硬盤序列號地址怎么查,怎樣查找電腦上的硬盤序列號
    mac如何分區安裝win10(蘋果電腦裝蘋果系統怎么分區)
    戴爾中國百度百科,DELL是什么牌子的電腦
    手機支付寶免費下載安裝包(下載手機支付寶軟件)
    電腦更換硬盤后需要重新做系統么,換新硬盤需要重裝系統嗎
    控制反轉 php(在spring框架中,什么是控制反轉,什么是依賴注入)
    win10電腦如何開啟灰白模式快捷鍵(win10電腦如何開啟灰白模式)
    小米手機字體下載后怎么安裝(小米手機字體如何免費下載)
    如果忘記了鎖屏密碼怎么辦,oppo如果忘記了鎖屏密碼怎么辦
    蘋果ipad充不上電是什么原因(ipad沒電了充了很久也不開機)
    哪個w10好用(好用的win10)
    win7清理c盤的操作步驟(windows7如何清理c盤)
    監控的硬盤容易壞嗎,做監控很壞硬盤嗎我1T的硬盤還沒一年就感覺有問題了磁盤操作
    2021主機配置清單及價格(配電腦主機清單2020)
    電腦一鍵啟動設置(電腦一鍵啟動按什么鍵)
    三星手機怎么添加截屏,三星折疊屏手機怎么截屏
    pr導入mp4視頻沒有聲音怎么回事(pr導入mp4視頻沒有聲音了)
    電腦玩游戲卡解決辦法(電腦玩游戲卡怎么回事-)
    怎樣把電腦磁盤分區合并,硬盤分區后怎么合在一起
    地下城電腦版下載(世界地下城下載)
    主站蜘蛛池模板: 日韩精品无码Av一区二区| 日韩一区二区三区视频| 国产高清精品一区| 亚洲国产精品一区二区三区在线观看 | 精品三级AV无码一区| 无码精品蜜桃一区二区三区WW| 99精品一区二区三区| 国产精品va无码一区二区| 亚洲一区二区高清| 无码AⅤ精品一区二区三区| 日韩一区二区视频在线观看| 亚洲国产老鸭窝一区二区三区| 精品一区二区三区高清免费观看| 国产三级一区二区三区| 成人精品一区二区不卡视频| 亚洲色无码专区一区| 亚洲一区二区三区久久| 在线播放国产一区二区三区| 久久精品国产一区二区三 | 亚洲一区二区成人| 久久国产高清一区二区三区| AV怡红院一区二区三区| 丰满人妻一区二区三区免费视频 | 中文字幕在线观看一区| 国产一区二区精品尤物| 日韩精品电影一区亚洲| 中文字幕一区二区三区免费视频| 精品国产不卡一区二区三区| 国产另类ts人妖一区二区三区| 精品视频一区二区三区| 国产午夜精品免费一区二区三区| 亚洲日韩国产精品第一页一区| 无码乱人伦一区二区亚洲一| 日韩精品无码一区二区三区不卡| 91在线看片一区国产| 韩国精品福利一区二区三区| 日本一区二区在线免费观看| 一区二区高清视频在线观看| 国产免费一区二区三区不卡| 亚洲av成人一区二区三区| 亚洲AV日韩AV一区二区三曲|