初识AOP面向切面编程

来源:互联网 发布:mooc网络公开课网站 编辑:程序博客网 时间:2024/04/28 00:17

         AOP(面向对象编程)是一种设计思想, 可以理解为函数式编程, 主要是处理某个有共性的功能需求, 运行时动态的注入代码到指定函数或指定位置上的思想; 技术上使用反射/动态代理的方式实现。

     

为什么要学习AOP,能帮我们解决什么问题?

我觉得它给我们提供了一种新的思路,是对面向对象的补充。 具体一点就是通过代码注入, 我们能在执行现有功能代码前后出入新的逻辑代码, 而且不用修改原始代码。 实战用处: 做app性能调优时打印API的执行时间、参数、返回值等, 或NB一点的热修复。

          

http://www.cnblogs.com/Wolfmanlq/p/6036019.html 很直观的说明切面是什么意思。 OOP思想下Android的各个系统服务和app代码本身功能里并不包含打日志功能,我们也可以将所有调用Log.*(打日志)的语句理解为一个切面,将功能代码注入到OOP思想下的模块里。


http://blog.csdn.net/innost/article/details/49387395  “深入理解Android之AOP” 这篇文章讲的非常详细, 看了很多关于Android AOP的文章, 感觉这篇是最好的。 我们只要记住Android AOP是用AspectJ实现的就好, 


https://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/ 

http://www.jianshu.com/p/0fa8073fd144

这两篇技术博客讲述了AspectJ的基本用法。


       我在想日常Android app开发中, AOP思想怎么落地呢?

       1、 使用JakeWharton开发的hugo打印函数的参数、返回值和执行时间。 优点是调试时方便且不会影响app原有代码;

      2、 既然是动态代理, 可以在特定函数里注入逻辑代码。 例如: 很多API判断是否有权限。

      3、 热修复。

      

原创粉丝点击