之前很多人都写过AOP 相关的博客,所以我写的不一定很好,只当自己的一些总结,留给以后查阅用,所以理论不会很多,更多的度是我自己的实践。
OOP:这个我们很熟悉,java中面向对象编程。
AOP:面向切面编程。个人理解它是对OOP的一种补充,是为了更好的降低耦合。譬如我们知道java中侧重业务的封装,比较独立的模块,我们希望组件化出来。降低耦合。但其实在我们正常开发的业务项目中,并不能做到完美的独立。
举个栗子: 我之前做过一个医疗的项目,项目中很多点击进入下一个模块,需要判断医生的认证情况
按我们没有接触过AOP思想的做法应该是如下的
if(beAuthentication){
进入下一个界面
}else{
进入医生认证界面
}
这种判断语句会出现很多独立的模块中的很多地方,看上去是不是显的很不cool。这种权限逻辑很多、并且哪天产品说需要改的情况下,是不是感觉很苦
Android当中常见的APT开发分几种方式
1) APT 代表框架:ButterKnife、Dagger2、DBFlow、AndroidAnnotation
2) AspectJ 代表框架 Hugo(Jake Wharton)
3)Javassist 代表框架:热修复框架HotFix 、Savior(InstantRun)等
它们的区别可以用下面经典的图表示
当然要理解AOP开发,需要了解的知识是注解,不是很了解的同学可以看下这篇文章
考虑到篇幅问题,一遍文章如果要把整个AOP 讲完,会云里雾里的,计划AOP分四个篇幅去讲