依赖倒置原则(dsp)
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
. $car -> run(); }}class client{ public static function doing(){ $driver = new driver(); $driver -> drive( new bmw() ); //开宝马 $driver -> drive( new benz() ); //开奔驰 . . . . }}client :: doing();?>
这么简单,学会了吧?依赖倒置原则核心一句话:面向接口编程。