????:<?php class Animal { public function swim() { return '我喜歡游泳'; } public function fly() { return '我喜歡飛'; } public function ru
<?php class Animal { public function swim() { return '我喜歡游泳'; } public function fly() { return '我喜歡飛'; } public function run() { return '我喜歡跑步'; } } // 類(lèi)內(nèi)部實(shí)例化類(lèi),在類(lèi)中實(shí)例化另一個(gè)類(lèi)這會(huì)讓當(dāng)前類(lèi)與被引用的類(lèi)之間產(chǎn)生高度的依賴(lài)關(guān)系,即高度耦合。這樣操作非常不好 class Fish { public function getInfo() { $fish = new Animal(); return '我是魚(yú),生活在水里'.$fish->swim(); } } $fish = new Fish(); echo $fish->getInfo(); echo '<hr>'; // 利用構(gòu)造函數(shù)實(shí)現(xiàn)依賴(lài)注入,類(lèi)外先實(shí)例化其它類(lèi),然后在new當(dāng)前時(shí)傳入實(shí)例化后的引用類(lèi)做參數(shù) class Bird { private $bird = null; public function __construct(Animal $animal) { $this->bird=$animal; } public function getInfo() { return '我是老鷹,生活在天空'.$this->bird->fly().'<hr>'; } } $animal = new Animal; $bird = new Bird($animal); echo $bird->getInfo(); // 利用操作方法(普通函數(shù))實(shí)現(xiàn)依賴(lài)注入,類(lèi)外先實(shí)例化其它類(lèi),然后在new當(dāng)前類(lèi)后調(diào)用操作方法時(shí)傳入實(shí)例化后的引用類(lèi)做參數(shù) class Hare { public function run(Animal $animal) { return '我的兔子,生活在野外'.$animal->run(); } } $animal = new Animal; $hare = new Hare; echo $hare->run($animal);
引用類(lèi)包含了各種需要用到的方法或不需要的方法,可對(duì)引用類(lèi)進(jìn)行實(shí)例化后的部分方法進(jìn)行訪(fǎng)問(wèn)操作,當(dāng)類(lèi)外部實(shí)例化另個(gè)類(lèi)后再以參數(shù)方式傳入當(dāng)前類(lèi)方法中可免類(lèi)之間產(chǎn)生高度的依賴(lài)關(guān)系
?? ???:查無(wú)此人?? ??:2019-06-05 10:09:33
???? ??:完成的不錯(cuò)。編程有很多設(shè)計(jì)模式,多了解,對(duì)以后工作幫助很大。繼續(xù)加油。