面向过程编程,面向对象编程和面向切面编程理解

面向过程(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

面向切面编程(Aspect Oriented Programming(AOP)),是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。


通过以下案例深入了解三者区别:

项目背景:大学新生报名,需要去相应学院注册登记。接着去财务处进行缴费,缴费完毕,拿着单子领取军训服装,最后去宿舍整理床铺。

需求分析对每个同学需要完成以下功能:(假设新生有小明,小李,小王,小周)
注:四位同学不是同一学校的,但是都需要通过以下程序进行注册报名,各个学校可能参考下面流程进行定制
(1). 去相应学院注册登记
(2). 去财务处进行缴费
(4). 缴费完毕
(5). 拿着单子领取军训服装
(6). 去宿舍整理床铺。


一 。 面向过程:

小明来学校报名
–>小明去相应学院注册登记
–>小明去财务处进行缴费
–>小明缴费完毕
–> 小明拿着单子领取军训服装
–>小明去宿舍整理床铺
小明注册完毕!
小李来学校报名
–>小李去相应学院注册登记
–>小李去财务处进行缴费
…….
小李注册完毕!
……..

可以明显的看出来,面向过程主要是对对整个事情的过程通过记流水账的方式进行实现。当然开发效率比较低,不适合做大型应用(当然操作系统内核主要是面向过程语言写的这比较特殊,写起来肯定得好久好久( ▼-▼ ))。

当需求变化时,比如需要去掉领取军训服的业务,那就麻烦了,需要对每位同学的过程进行修改,,( ▼-▼ )想想都有点可怕!

或者某些同学无法正常报道,需要改动和这些学生相关的代码,这工作量也不小。可见面向过程的变成想法还是需要进一步提高。

要是再加上各个学校定制的话,作为萌萌哒程序员,该哭了( ▼-▼ )


二。面向对象

首先,对学生报名进行抽象,抽象出来一个学生类,具有下面这几个方法
(1). 去相应学院注册登记
(2). 去财务处进行缴费
(4). 缴费完毕
(5). 拿着单子领取军训服装
(6). 去宿舍整理床铺。

小明来学校报名
通过上面抽象出来的学生类创建学生实例:小明。然后一次调用它的方法:
小明.去相应学院注册登记();
小明.去财务处进行缴费();
小明.缴费完毕();
小明.拿着单子领取军训服装();
小明.去宿舍整理床铺();
小明注册完毕!
小李来学校报名
小李.去相应学院注册登记();
小李.去财务处进行缴费();
…….
小李注册完毕!
……..

比起面向过程编程,面向对象编程简化了代码量,通过抽象,实现代码的复用,提高了开发效率。但是依然需要对每个对象进行引用。只能说是效率相对较高。

当需求发生变化时,例如,某些同学未能正常报到,需要删除相关代码,任务量相对小点。改动某个环节的内容,也很方便

但是,当每个学校进行定制的时候尼?这会就有点尴尬了,之前抽象的学生类都得改,改成每个学校的定制类,这样就会有多个学校类,还得该业务代码,,,不敢再想了,有点想哭的感觉。( ▼-▼ )


二。面向切面

首先对业务逻辑进行抽象,针对上面的六个业务进行各自封装实现。(已经六个类了)
然后,制作代理类,根据学校需求进行个性化封装学生类(好多类,至少一个)。
小明来学校报名
创建代理类,
根据学校规定调用相应方法,完成报名注册功能
小明注册完毕!
小李来学校报名
创建代理类,
根据学校规定调用相应方法,完成报名注册功能
…….
小李注册完毕!
……..

切面,指的是项目模块中某些业务逻辑。面向切面编程通俗一点就是面向业务的一种编程思想(当然业务需要一定的共性),然后通过代理完成类的创建,极大程度的降低代码的重复,有效的提高了代码的重用率和开发效率。。。当然结合IOC(控制反转),将对象直接注入到代理类中,通过代理完成调用方法,那就更完美了


例子比较牵强,看下图形象一点:

这里写图片描述

切面是横跨流程的,实现某个特定位置的功能,面向功能进行抽象。具体流程只需做引用即可,而不至于不同流程中冗余很多类似代码。

  • 14
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼠晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值