AOP学习之路

OOD/OOP面向名词领域,AOP面向动词领域。

ioc和aop
http://blog.csdn.net/tittop/article/details/6716033

动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。
基于动态代理API的具体项目有:
JBoss 4.0 JBoss 4.0服务器
基于字节码的项目有:
aspectwerkz ,spring

如果说面向对象编程是关注将需求功能划分为不同的并且相对独立,封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系的话;那么面向切面编程则是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可

serviceloader 一个idea

注意所有AOP功能的底层实现都是靠Java的动态代理机制实现的,往往是基于JDK自身的代理类,或者是Javassist、CGLIB工具等,因此AOP的作用对象不能是私有方法、静态方法以及final方法。

动态代理和aop
http://www.cnblogs.com/xiaoxiao7/p/6057724.html

安卓AOP三剑客:APT,AspectJ,Javassist
http://www.jianshu.com/p/dca3e2c8608a?from=timeline

AspectJ: 一个 JavaTM 语言的面向切面编程的无缝扩展(适用Android)。
https://eclipse.org/aspectj/

Javassist for Android: 用于字节码操作的知名 java 类库 Javassist 的 Android 平台移植版。
https://github.com/crimsonwoods/javassist-android

DexMaker: Dalvik 虚拟机上,在编译期或者运行时生成代码的 Java API。
https://code.google.com/p/dexmaker/

ASMDEX: 一个类似 ASM 的字节码操作库,运行在Android平台,操作Dex字节码。
http://asm.ow2.org/asmdex-index.html

jake 大神相关项目
https://github.com/JakeWharton/hugo

apt动态生成代码入门
http://www.tuicool.com/articles/Rremym

你可能感兴趣的:(android)