依賴倒置原則(DIP)php
<?php // 司機開奔馳,未用依賴倒置原則的寫法 class Benz{ public function run(){ return " Benz is runing!!!"; } } class Driver{ public function drive(Benz $car){ echo $car -> run(); } } class Client{ public static function doing(){ $driver = new Driver(); $driver -> drive( new Benz() ); } } Client :: doing(); // 那麼若是司機想開寶馬呢?,是否是就要修改Driver了,這就違反了開閉原則了,怎麼能只在Client添加代碼就讓寶馬車也會開呢? interface ICar{ //定義一個汽車接口 public function run(); } class BMW implements ICar{ public function run(){ return "BMW is runing !!!"; } } class Benz implements ICar{ public function run(){ return "Benz is runing !!!"; } } interface IDriver{ //定義一個司機接口,以防之後有A照,B照,C照的 public function drive(ICar $car); } class Driver implements IDriver{ public function drive(ICar $car){ echo "<br>" . $car -> run(); } } class Client{ public static function doing(){ $driver = new Driver(); $driver -> drive( new BMW() ); //開寶馬 $driver -> drive( new Benz() ); //開奔馳 . . . . } } Client :: doing(); ?>
這麼簡單,學會了吧?依賴倒置原則核心一句話:面向接口編程。編程