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

本文通过实例比较了面向过程和面向对象编程方式处理新增动物声音模拟的区别。面向过程需重构原有函数,而面向对象仅需新增类,保持原有代码不变,展现了面向对象编程的灵活性与扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

以下是面向过程的代码:
<?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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值