AOP (Aspect-Oriented Programming的简称),也就是面向切面编程的意思,它是一种编程思想,在Spring的官方文档中描述: 面向切面编程(AOP)提供了另一种思考程序结构的方式来对面向对象编程(OOP)的进行补充和完善,面向对象编程(OOP)中关键的是对象,而面向切面编程(AOP)中关键的是切面。

    说的比较傻 举个例子:做饭 不管是做什么菜 它的准备和结尾都是点火和熄火(理想情况),这两个步骤在做菜这个事务中不是核心
    image.png
    通过上一篇文章我们能够知道,
    面向对象编程(OOP)的出现让开发者能够实现纵向的业务逻辑处理,但面向对象编程(OOP)并不适合用于定义横向业务逻辑的关系,这样的设计会导致系统出现大量重复代码,复用性极差**,如最常用的日志以及事务功能,它们都可能是横向的分布在不通的业务层级(对象层级)中,但是又和具体的核心业务无直接关系,诸如这样类型的代码,在程序中被称作横切(cross cutting),我们应该考虑将这一类代码进行统一管理,提高复用性。

    面向切面编程(AOP)就是将这类与核心业务无关的,但又影响着多个类的公共行为抽取、封装到一个可重用模块,从而实现代码复用和模块解耦的目的,这种开发思想则被称为面向切面编程。

    AOP技术将与核心业务无关或者关系不大却为不同业务模块公用或者需要的逻辑抽取成新的模块,在需要的地方再引入,大大减少的系统的重复代码。

    image.png

    集合的交集和并集

    1. ArrayList<String> actualList = ["1","2","3"]
    2. ArrayList<String> expectList = ["1","5","6"]
    3. containsList(actualList, expectList )
    4. //Check the expectList in actualList
    5. static def containsList(ArrayList<String> actualList, ArrayList<String> expectList){
    6. if(actualList.containsAll(expectList)){
    7. assert true
    8. } else {
    9. ArrayList<String> actualListBackUp = actualList.clone()
    10. expectList.removeAll(actualList)
    11. assert false, "This data is not in list " + expectList
    12. }
    13. }
    14. ArrayList<String> liasA = Arrays.asList(list);