面向过程与面向对象的区别_小黄牛教PHP之三十二 面向对象

1、面向过程与面向对象的区别

回忆知识,同学们在之前的学习,不管是将代码解耦、功能封装,我们都是使用的function()自定义函数。

对于一些较大功能的函数,例如数据库的操作,我们只能将其拆分成许多个function()
而一些私有的逻辑解耦,只能单独存放在一个文件中保存,否则就极其难维护代码。

而这样的编程方式,就是PHP5.0+之前,PHP的编程方式,我们将之称为面向过程编程。

在PHP5.0+之后,这样的编程方式已经彻底废弃了,原因是因为PHP提供了一个class{}类定义。

A、面向过程与面向对象的对比

如果将面向过程的程序解耦,称之为功能拆分,拆分之后的function()是没办法按一个大的范围管理的,最大的管理范围是用一个文件单独装起来,例如:

1、公共函数库

2、私有函数库

而面向对象的程序解耦,则可以称之为功能设计,我们将某个管理范围内的所有函数都统一放入class{}类定义中,这样就不再需要使用文件管理函数类别。

同时class{}还有着许多function()自定义函数无法做到的特性,将在之后中一一学习到。

下面我们用一个简单的案例,来加深面向对象 与 面向过程的区别:

假设,我们现在要像炼气期升阶考试中一样,封装一些数据库的操作,那么面向过程只能这样做:

php

# 开启数据库

function Start(){}

# 关闭数据库

function End(){}

# 新增数据

function Add(){}

# 修改数据

function Upd(){}

# 删除数据

function Del(){}

# 更多的其他数据操作函数

......

这样每个function()都是独立的,他们之间没有任何关联,同时当你引入这个保存着所有function()文件的时候,PHP就会计算这些function()函数体所占用的内存,

就好比,你建房子,虽然还没开工(还没调用函数),但你已经买了一堆材料回来(函数体积),那就肯定会占用一些面积存放它们啦。

而面向对象的实现方式,则是这样:

php

# 第一个数据库操作封装

class Mysql{

# 开启数据库

public function Start(){}

# 关闭数据库

public function End(){}

# 更多的其他数据操作函数

......

}

# 第二个数据库操作封装

class Oracle{

# 开启数据库

public function Start(){}

# 关闭数据库

public function End(){}

# 更多的其他数据操作函数

......

}

相比于面向过程,我们需要引入这个保存着所有class{}文件之后,再new 对应的class,才能调用其内部的function()函数,虽然比起面向过程来说,这样的使用方式多了一个步骤,却解决了函数重名的问题。

而在引入这个文件的时候,PHP只会计算这个文件大小所占用的内存,不会计算class{}内部function()函数体所占用的内存大小,就好比,你建房子,class()只是一张设计图,而你在没有调用(new)之前,建房子的材料是还没买回来的(内部函数体积),它所占用的面积就是这张设计图的大小。

B、两者的区别

面向过程优点:

1、代码量少

2、上手简单

面向过程缺点:

1、代码耦合度高、所有功能基本都是考页面引入关联起来

2、解耦能力差

3、解耦依赖function()自定义函数,内存开销巨大

4、项目难管理、代码难维护

面向对象优点:

1、程序逻辑清晰

2、代码耦合度低

3、解耦能力强

4、解耦使用class{},代替页面分离,减少function()所占用的函数体积内存开销

5、基于面向对象实现的单一入口程序,可以更好的管理项目,与维护旧代码

6、使用class{}类定义的函数,可以有效的控制调用权限,让程序更加安全。

面向对象缺点:

1、代码量多

2、上手难度高

C、使用场景

面向过程与面向对象,在编程中的区别,主要是一个主次关系,面向过程主要核心是使用function()自定义函数为主,面向对象则是使用class{}类定义为主,function()自定义函数为辅;

在现在的IT界中,已经基本没人会使用面向过程编程了,因为优缺点太明显。

2、面向对象的抽象概念

class{}的主要概念,是必须要将它想象为一张 或 一组设计图。

335ccf7c1811dbe86c468f567ae99339.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值