【前言】
今天小编来总结一下对OOP与AOP的认识。
主题:
1.OOP是什么?
2.AOP是什么?
【内容】
1.OOP,面向对象编程(Object Oriented Programming),是什么?
是一种利用对象进行编程的思想。
面向对象三大特征:
封装,继承,多态。
那什么是封装、继承、多态?
封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
继承:继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
什么时候用封装继承多态呢?
根据实际情况进行选择,可能有时候不需要用,但是你用了,可能会很麻烦。但在需要的时候你用上了,那么难的问题就会变得简单起来。
面向对象达到了软件工程的三个主要目标:
重用性、灵活性和扩展性。
2.AOP,面向切面编程(Aspect Oriented Program)
同样也是一种思想。
官方解释:
通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
经过昨晚上和师父们一起讨论的结果,通过例子来理解:
1.点线面问题(刁琳童师父)
我们在一条线上针对一个点操作,所有的线都是针对这个点来操作的,把这些点合并起来,我们就形成了切面。
2.数据库例子(刁琳童师父)
我们现在的重构,写查询语句的时候,是每条语句查一个数据库的表(比较简单),但是当业务复杂的时候,可能需要查几个数据库中的某一个表,这时候我们就会有一个切面,可以先查1数据库,再查2数据库,3数据库,也可以先查2数据库,再查1数据库,3数据库。
3.吃面条的例子(孙绍聪师父)
当你吃面条的时候,咬断一口,这个时候可以做一个切面,你要吃一个枣,这个时候就是一个切面,接下来你可以选择先吃一个枣,再吃一口面条,你也可以先吃一口面条,再吃一个枣,但是形成了之后,这个规则不可变。
个人理解:
AOP,面向切面编程,就拿学生上机功能来说,在点击上机按钮上机的时候,你要判断一下此卡号是否正在上机,余额是否充足等这些问题,你是先判断卡号是否正在上机,还是余额是否充足,还是先判断余额是否充足,再判断卡号是否正在上机,这个时候就形成一个切面。
3.OOP与AOP的区别与联系
OOP面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程的某个步骤或阶段,以获得逻辑过程的中各部分之间低耦合的隔离效果。OOP与AOP可以并存。
【感悟】
感觉这两个东西比较抽象,范围很大,在学习项目编写代码的时候可能用到过这些思想,但自己可能不知道自己用了。只有看的多了,用的多了,才能更明白这两个概念,实践很重要。
大家有什么见解,欢迎评论!!!