15.6 OOP还是AOP
我们使用SoC方法把系统分解成小单元时,就不可避免地遇到需要把一些洒落在零散小单元里的相同逻辑模块化为同一单元的问题。不管是过程式编程、函数式编程还是OOP编程,只要你把问题由大到小进行分割,都会出现相同的问题。
由于近年来OOP编程的迅猛发展,我们往往把这个诟病归结于OOP,当出现AOP编程技术时,自然而然产生了AOP编程是否能像OOP在某些开发领域取代过程式编程/函数式编程一样取代OOP编程的疑问。
其实纵向切割系统是非常有用的,大多数问题在纵向上分解之后非常容易解决,如果横向分解系统,那就会产生大量的切面,大量切面产生的叠加效果往往是难以估计的、灾难性的。
可见,单纯的使用水平切割系统和垂直切割系统都会引入问题,只有把二者结合起来才能帮助我们更加完善地模块化问题,现在大多数软件开发人员都认为AOP是OOP的重要补充。