`

黑马程序员Java培训和Android培训Java技术五

 
阅读更多
黑马程序员
五十一
同Java技术四的五十创建动态类的对象及调用其方法。

五十二
同五十

五十三
让动态生成的类成为目标类的代理
---怎样将目标类传进去?
直接在InvocationHandler实现类中创建目标类的实例对象,可以看运行效果和加入日志代码,但没有实际意义。
为InvocationHandler实现类注入目标类的实例对象,不能采用匿名内部类的形式了。
让匿名的 InvocationHandler实现类访问外面方法中的目标类实例对象的final类型的引用变量。

将创建代理的过程改为一种更优雅的方式,eclipse重构出一个getProxy方法绑定接收目标同时返回代理对象,让调用者更懒惰,更方便,调用者甚至不用结束任何代理的API。

把系统功能代码模块化,即将切面代码也改为通过参数形式提供,怎样把执行的系统功能代码以参数形式提供?
---把要执行的代码装到一个对象的某个方法里,然后把这个对象作为参数传递,接收者只要调用这个对象的方法,即等于执行了外界提供的代码!
---为bind方法增加一个Advice参数。

五十四
同五十三

五十五
通行的契约
Spring就有动态代理的应用。

五十六
实现AOP功能的封装与配置
工厂类BeanFactory负责创建目标类或代理类的实例对象,并通过配置文件实现切换。其getBean方法根据参数字符串返回一个相应的实例对象,如果参数字符串在配置文件中对应的类名不是ProxyFactoryBean,则直接返回该类的实例对象,否则,返回该类实例对象的getProxy方法返回的对象。

BeanFactory的构造方法接收代表配置文件的输入流对象,配置文件格式如下:
#xxx=java.util.ArrayList
xxx=cn.itcast.ProxyFactoryBean
xxx.target=java.util.ArrayList
xxx.advice=cn.itcast.MyAdvice

ProxyFactoryBean充当封装成动态代理的工厂,需要为工厂类提供哪些配置参数信息?
---目标
---通知

编写客户端应用:
---编写实现Advice接口的类和在配置文件中进行配置
---调用BeanFactory获取对象

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics