面向过程与面向对象的一些区别,基于抽象类的一些思考

<?php
/*抽象类的应用

//场景:判断不同来源,显示不同提示文字

面向过程如下处理
$a='eng';
if ($a=='eng'){
    echo'nihao';
}else if($a=='cha'){
    echo'killni';
}else if($a=='ha'){
    echo'hao';
}
//以上不好扩展,以后再来一个的话,还需要增加else if,原程序必须改动!

*/

//用面向对象来处理!

//1、后台定义抽象类,规范方法
abstract class Welcome{
    abstract function wel();
}

//2、继承后,再用自己的方法处理
class eng extends Welcome{
    public function wel(){
        echo'nihao';
    }
}
class cha extends Welcome{
    public function wel(){
        echo'killni';
    }
}
class ha extends Welcome{
    public function wel(){
        echo'hao';
    }
}


//3、前台实现,只用wel接口!
$c='cha';//更改为cha,ha就显示不同效果!
$my=new $c();
$my->wel();

//总结:以抽象来处理后,以后,再增加一个对象就好!无须改动原来已经写好的代码!
//与上面面向过程的例子最大的区别,前后分离更好了!


/*
思考:如果在wel方法里,加一个参数(参数就是显示的文字)
那么后台的wel方法是否可以优化了?也不需要再声明那么多的类了?
如此前台必须按不同的变量要来控制显示!那么与上例相比,有什么不同?
//如下:
class Wel{
     function wel($zi){
         echo $zi;
     }

$c='cha';//更改为cha,ha就可以!
$my=new $c();
$my->wel();
思考结果:
1、这样的话,前台也需要再做$c的判断(这样转给前台,意义不大了)!
2、如,再加一个的话,不需要后台插手,前台可自行操作(这样有利也弊:如增加一个人时要在后台加以控制,就显得无力了)

补:希望看到此信息的朋友能不吝赐教,给我说说我这想法之间存在的问题,谢谢!
*/

?>

posted @ 2012-11-14 23:44  505430170  阅读(223)  评论(0编辑  收藏  举报