最近在学习spring的AOP,顺便把三种思想一起总结一下。仅代表个人理解,欢迎指正。
首先是面向过程编程,在实现业务逻辑的时候,整理出业务流,然后细分成方法,编程实装。
通过对这一系列方法进行一定顺序的调用,达到程序处理业务的目的。
这种思想的特点很明显,就是直接了当,你需要什么样的处理,我就写什么样的方法,没有多余的东西。
相对应的优点就是系统处理速度快。这个很好理解。
缺点也是非常明显,不易于扩展和重用。系统和系统之间多多少少都会有细微的业务差异,系统A量身定制的方法很难直接拿来给系统B用,
有些方法可能可以改改拿来用,但对于整个系统开发来说,这点重用好比九牛一毛。
扩展性也是一大问题,这就像是一个数组,我想往里面插入一个元素,我得先找到插入的位置,插入元素后,本来在后面的元素还得依次往后移位。
这里我想表达的是两个点:1,扩展时修改的位置不好找;2,修改后的影响确认工作量很大。
当然不是说面向过程就不好,思想本身没有对错,只是适用的情况不同而已。
比如在需求千变万化的快速开发中,基于面向过程的思想便不再适用,面向对象显然更合适。
面向对象编程,本质上有点类似于一种语法糖,贴合现实的思想本身就可以提高编程者的效率。
同样的需求,用面向对象的思想来设计,跟面向过程最大的区别就是关注点从方法转移到了对象,从方法与方法的协作提升到对象与对象的协作。
通过继承和多态我们可以很方便地重用代码,扩展功能。
面向切面编程,如果说对象中的一个方法是一个点,那多个不同对象中的多个方法组合起来就像一个横切面。
那为什么需要这个横切面呢,当然是为了易于维护。想象一下,这些方法在我的系统中是类似固定组合的存在,
假如我每次调用时都临时把它们组合起来,那如果用到的地方很多,重复代码就会很多,后期有改动时,改动量就会很大。
但如果我把这些方法提前组合好(类似面向过程的设计,但组合后仍是对象),那是不是会好很多,其实这也是高内聚的一种表现。
标签:对象,编程,系统,面向对象,面向,方法,切面 From: https://www.cnblogs.com/ljx66/p/16932426.html