006:面向过程的代码 vs 面向对象的代码

 

以下是面向过程的代码:
<?php
function getSound($animal){
if($animal=="dog"){
   return "汪";
}

if($animal=="cat"){
   return "喵";
}

if($animal=="cow"){
   return "哞";
}

return "暂时听不懂该动物的声音,动物学家们正在研究";
}

echo getSound("dog");//汪
echo getSound("cat");//喵
echo getSound("cow");//哞
?>

以下是引入了面向对象的代码:
<?php
function getSound($animal){
if($animal instanceof Animal){
   return $animal->showSound();
}

return "暂时听不懂该动物的声音,动物学家们正在研究";
}

class Animal{
function showSound(){
   return "不同动物应该用不同声音";
}
}

class Dog extends Animal{
function showSound(){
   return "汪";
}
}

class Cat extends Animal{
function showSound(){
   return "喵";
}
}

class Cow extends Animal{
function showSound(){
   return "哞";
}
}

$dog=new Dog();
echo getSound($dog);//汪
$cat=new Cat();
echo getSound($cat);//喵
$cow=new Cow();
echo getSound($cow);//哞
?>

问题:如果一种新的动物比如蜜蜂“嗡”被动物学家们研究后听懂,代码怎么变换?

以下是我们用文件的结构图的方式来表示:



 


面向过程中:
1、我们增加新的访问文件2.php
2、我们抛弃了原来的function.getSound.php,历史痕迹为“function.getSound.php.bak”,
我们必须改写function getSound()程序代码
这个是不好的,我们破坏了以前的结构或者文件

面向对象中:
1、我们增加新的访问文件2.php
2、我们增加了另外文件class.Bee.php,并没有破坏以前的代码

很明显我们看得出,
面向过程编程,对于新的需求,需要破坏以前的代码,
而面向对象编程,“不必破坏以前的代码”,可以写出“适应未来的代码”,这点非常让人激动。

 

转载至杨永喜老师的百度空间http://hi.baidu.com/%D1%EE%D3%C0%CF%B2/home

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值