日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

php控制反轉與依賴注入舉例講解

瀏覽:245日期:2022-06-05 17:43:34
目錄
  • 耦合
  • 小明和他的手機
  • 小明的快樂與憂傷
  • 造物主的智慧
  • 小明的感悟

耦合

兩個或以上的體系或兩種運動形式間相互作用而彼此影響以至于聯(lián)合起來的現(xiàn)象。在軟件工程中,對象之間的耦合度就是對象之間的依賴性,對象之間的耦合越高,維護成本就越大。

小明和他的手機

從前有個人叫小明

小明有三大愛好,抽煙,喝酒…… 咳咳,不好意思,走錯片場了。應該是逛知乎、玩王者農藥和搶微信紅包

我們用一段簡單的偽代碼,來制造一個這樣的小明

class Ming extends Person{    private $_name;    private $_age;    function read()    {//逛知乎    }    function  play()    {//玩農藥    }    function  grab()    {//搶紅包    }}

但是,小明作為一個人類,沒有辦法僅靠自己就能實現(xiàn)以上的功能,他必須依賴一部手機,所以他買了一臺iphone6,接下來我們來制造一個iphone6

class iPhone6 extends Iphone{    function read($user="某人")    {echo $user."打開了知乎然后編了一個故事 \n";    }    function play($user="某人")    {echo $user."打開了王者農藥并送起了人頭 \n";    }    function grab($user="某人")    {echo $user."開始搶紅包卻只搶不發(fā) \n";    }}

小明非常珍惜自己的新手機,每天把它牢牢控制在手心里,所以小明變成了這個樣子

class Ming extends Person{    private $_name;    private $_age;    public function  __construct()    {$this->_name = "小明";$this->_age = 26;    }    function read()    {//……  省略若干代碼(new iPhone6())->read($this->_name); //逛知乎    }    function  play()    {//……  省略若干代碼(new iPhone6())->play($this->_name);//玩農藥    }    function  grab()    {//……  省略若干代碼(new iPhone6())->grab($this->_name);//搶紅包    }}

今天是周六,小明不用上班,于是他起床,并依次逛起了知乎,玩王者農藥,并搶了個紅包。

$ming = new Ming();  //小明起床$ming->read();$ming->play();$ming->grab();

這個時候,我們可以在命令行里看到輸出如下

小明打開了知乎然后編了一個故事
小明打開了王者農藥并送起了人頭
小明開始搶紅包卻只搶不發(fā)

這一天,小明過得很充實,他覺得自己是世界上最幸福的人。

小明的快樂與憂傷

小明和他的手機曾一起度過了一段美好的時光,一到空閑時刻,他就抱著手機,逛知乎,刷微博,玩游戲,他覺得自己根本不需要女朋友,只要有手機在身邊,就滿足了。

可誰能想到,一次次地系統(tǒng)更新徹底打碎了他的夢想,他的手機變得越來越卡頓,電池的使用壽命也越來越短,一直到某一天的寒風中,他的手機終于耐不住寒冷,頭也不回地關了機。

小明很憂傷,他意識到,自己要換手機了。

為了能獲得更好的使用體驗,小明一咬牙,剁手了一臺iphoneX,這部手機鈴聲很大,電量很足,還能雙卡雙待,小明很喜歡,但是他遇到一個問題,就是他之前過度依賴了原來那一部iPhone6,他們之間已經深深耦合在一起了,如果要換手機,他就要拿起刀來改造自己,把自己體內所有方法中的iphone6 都換成 iphoneX。

經歷了漫長的改造過程,小明終于把代碼中的 iphone6 全部換成了 iphoneX。雖然很辛苦,但是小明覺得他是快樂的。

于是小明開開心心地帶著手機去上班了,并在回來的路上被小偷偷走了。為了應急,小明只好重新使用那部剛剛被遺棄的iphone6,但是一想到那漫長的改造過程,小明的心里就說不出的委屈,他覺得自己過于依賴手機了,為什么每次手機出什么問題他都要去改造他自己,這不僅僅是過度耦合,簡直是本末倒置,他向天空大喊,我不要再控制我的手機了。

天空中的造物主,也就是作為程序員的我,聽到了他的吶喊,我告訴他,你不用再控制你的手機了,交給我來管理,把控制權交給我。這就叫做控制反轉。

造物主的智慧

小明聽到了我的話,他既高興,又有一點害怕,他跪下來磕了幾個頭,虔誠地說到:“原來您就是傳說中的造物主,巴格梅克上神。我聽到您剛剛說了 控制反轉 四個字,就是把手機的控制權從我的手里交給你,但這只是您的想法,是一種思想罷了,要用什么辦法才能實現(xiàn)控制反轉,又可以讓我繼續(xù)使用手機呢?”

“呵“,身為造物主的我在表現(xiàn)完不屑以后,扔下了四個大字,“依賴注入!”

接下來,偉大的我開始對小明進行慘無人道的改造,如下

class Ming extends Person{    private $_name;    private $_age;    private $_phone; //將手機作為自己的成員變量    public function  __construct($phone)    {$this->_name = "小明";$this->_age = 26;$this->_phone = $phone;echo "小明起床了 \n";    }    function read()    {//……  省略若干代碼$this->_phone->read($this->_name); //逛知乎    }    function  play()    {//……  省略若干代碼$this->_phone->play($this->_name);//玩農藥    }    function  grab()    {//……  省略若干代碼$this->_phone->grab($this->_name);//搶紅包    }}

接下來,我們來模擬運行小明的一天

$phone = new IphoneX(); //創(chuàng)建一個iphoneX的實例if($phone->isBroken()){//如果iphone不可用,則使用舊版手機    $phone = new Iphone6();}$ming = new Ming($phone);//小明不用關心是什么手機,他只要玩就行了。$ming->read();$ming->play();$ming->grab();

我們先看一下iphoneX 是否可以使用,如果不可以使用,則直接換成iphone6,然后喚醒小明,并把手機塞到他的手里,換句話說,把他所依賴的手機直接注入到他的身上,他不需要關心自己拿的是什么手機,他只要直接使用就可以了。

這就是依賴注入。

小明的感悟

小明的生活開始變得簡單了起來,而他把省出來的時間都用來寫筆記了,他在筆記本上這樣寫到

我曾經有很強的控制欲,過度依賴于我的手機,導致我和手機之間耦合程度太高,只要手機出現(xiàn)一點點問題,我都要改造我自己,這實在是既浪費時間又容易出問題。自從我把控制權交給了造物主,他每天在喚醒我以前,就已經替我選好了手機,我只要按照平時一樣玩手機就可以了,根本不用關心是什么手機。即便手機出了問題,也可以由造物主直接搞定,不需要再改造我自己了,我現(xiàn)在買了七部手機,都交給了造物主,每天換一部,美滋滋!

我也從其中獲得了這樣的感悟: 如果一個類A 的功能實現(xiàn)需要借助于類B,那么就稱類B是類A的依賴,如果在類A的內部去實例化類B,那么兩者之間會出現(xiàn)較高的耦合,一旦類B出現(xiàn)了問題,類A也需要進行改造,如果這樣的情況較多,每個類之間都有很多依賴,那么就會出現(xiàn)牽一發(fā)而動全身的情況,程序會極難維護,并且很容易出現(xiàn)問題。要解決這個問題,就要把A類對B類的控制權抽離出來,交給一個第三方去做,把控制權反轉給第三方,就稱作控制反轉(IOC Inversion Of Control)。控制反轉是一種思想,是能夠解決問題的一種可能的結果,而依賴注入(Dependency Injection)就是其最典型的實現(xiàn)方法。由第三方(我們稱作IOC容器)來控制依賴,把他通過構造函數(shù)、屬性或者工廠模式等方法,注入到類A內,這樣就極大程度的對類A和類B進行了解耦。

到此這篇關于php控制反轉與依賴注入舉例講解的文章就介紹到這了,更多相關php控制反轉與依賴注入內容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费的成人av| 成人日韩av| 国产精区一区二区| 国产视频一区在线观看一区免费| 毛片在线网站| 丝袜av一区| 欧美日韩国产一区二区三区不卡| 欧洲av不卡| zzzwww在线看片免费| 国内一区二区三区| 国产 日韩 欧美 综合 一区 | 99pao成人国产永久免费视频| 国产一区二区中文| 亚洲激情av| 日韩久久99| 日韩高清在线不卡| 国产精品magnet| 成人高清一区| 岛国精品一区| 不卡一二三区| 精品理论电影在线| 国产精品成人a在线观看| 麻豆91在线播放| 福利视频一区| 欧美不卡高清| 视频在线观看国产精品| 亚洲精品看片| 国产精品一区二区三区美女| 免费亚洲婷婷| 蜜桃成人精品| 免费日本视频一区| 亚洲九九精品| 日本不卡的三区四区五区| 久热综合在线亚洲精品| 国产女优一区| 国产调教精品| 91亚洲人成网污www| 亚洲午夜av| 亚洲精品乱码| 国产精品porn| 伊人久久成人| 日韩大片在线| 精品国产乱码久久久久久樱花| 日韩中文首页| 日韩av一区二区在线影视| 极品av在线| 日韩激情av在线| 亚洲激情欧美| 久久精品电影| 日韩欧美三级| www.九色在线| 精品一区av| 欧美极品中文字幕| 国产欧美午夜| 国产欧美91| 日韩精品1区2区3区| 国产精品外国| 亚洲男女av一区二区| 亚洲午夜精品久久久久久app| 国产不卡精品在线| 国产精品黑丝在线播放| 久久99精品久久久久久园产越南| 国产精品亚洲综合久久| 老牛国内精品亚洲成av人片| 久久狠狠久久| 精品一区二区三区免费看| 国产欧美精品| 久久精品三级| 成人va天堂| 99免费精品| 久久美女精品| 国产精品日韩久久久| 99国产精品久久久久久久成人热| 久久精品在线| 红桃视频欧美| 蜜臀91精品一区二区三区| 日本不卡一二三区黄网| 久久精品99国产国产精| 国产精品男女| 樱桃视频成人在线观看| 日韩电影在线视频| 激情五月综合| 亚洲精品日本| 精品国产一区二区三区av片| 国产精品13p| 亚洲综合精品四区| 欧美片网站免费| 在线手机中文字幕| 国产婷婷精品| 欧美精品第一区| 韩日一区二区三区| 免费观看久久久4p| 福利精品在线| 国产毛片久久| 精品少妇av| 在线免费观看亚洲| 91综合视频| 婷婷综合亚洲| 91九色综合| 国产精品毛片| 色欧美自拍视频| 国产日韩一区二区三区在线播放| 欧美日韩中文字幕一区二区三区| 天堂精品久久久久| 激情久久久久久久| 人人草在线视频| 蜜桃视频在线网站| 一区二区精品| 香蕉久久久久久久av网站| 88xx成人免费观看视频库| 久久久国产精品网站| 热久久久久久| 日韩精品欧美大片| 亚洲一区二区三区久久久| 在线日韩电影| 亚洲电影有码| 日韩深夜视频| 成人亚洲一区| 日本不卡视频在线| 日韩精品视频在线看| 中文字幕免费一区二区| 欧美日中文字幕| 亚洲国内精品| 久久精品亚洲人成影院| 在线观看精品| 久久中文亚洲字幕| 欧美日韩在线二区| 激情婷婷亚洲| 亚洲电影在线| 婷婷亚洲综合| 国产精品三上| 视频一区视频二区中文字幕| 伊人久久婷婷| 日韩影院在线观看| 石原莉奈在线亚洲二区| 亚洲在线观看| 亚洲免费婷婷| 一区二区亚洲视频| 日韩黄色av| 国产精品一区免费在线| 国产精品麻豆成人av电影艾秋| 欧美精品91| 成人精品视频| 三级精品视频| 亚洲免费激情| 不卡一区2区| 天堂va蜜桃一区二区三区| 日韩中文字幕一区二区三区| 西西人体一区二区| 日韩精品免费视频人成| 国产伦乱精品| 欧美激情五月| 欧美精品高清| 91久久午夜| 日本伊人午夜精品| 久久xxx视频| 日韩久久精品| 亚洲一区欧美二区| 91欧美极品| 亚洲欧洲高清| 好吊一区二区三区| 视频一区日韩精品| 麻豆久久一区二区| 精品欧美一区二区三区在线观看| 九九久久婷婷| 日本免费在线视频不卡一不卡二| 欧美精品福利| 97精品国产| 国产精品日本| 国产伦精品一区二区三区在线播放| 国产一区二区精品久| 欧美一区二区三区高清视频 | 亚洲一级黄色| 日本 国产 欧美色综合| 久久激情五月婷婷| 色网在线免费观看| 另类激情亚洲| 精品三级久久久| 欧美中文一区二区| 欧美一级网址| 91精品国产自产在线观看永久∴ | 国产成人久久精品一区二区三区| 久久国产亚洲精品| 亚洲中午字幕| 精品视频在线你懂得| 色在线视频观看| 蜜桃av一区二区在线观看| 免费看一区二区三区| 99国内精品| 日本强好片久久久久久aaa| 91视频久久| 视频精品一区| 久久蜜桃精品| 久久狠狠久久| 最新国产拍偷乱拍精品| 国产精品一级在线观看| 午夜欧美理论片| 国产一区二区三区四区五区传媒| 天堂成人国产精品一区| 国产一区二区三区不卡视频网站 |