黑马程序员技术交流社区

标题: 关于静态和动态代理经验分享!可帮助理解 [打印本页]

作者: 蓝骑    时间: 2013-9-11 13:02
标题: 关于静态和动态代理经验分享!可帮助理解
1. 代理模式主要有两种:静态代理和动态代理

2. 静态代理:

比如要在输出“HelloWorld”前打印一个字符串“Welcome”

A:先定义一个接口类
Java代码  


   



B: 定义一个该接口的实现类

java 代码
Java代码  






C:定义一个静态代理类
Java代码  






D: 一个测试类:
Java代码  




可以看出静态代理类有一个很不爽的缺点:当如果接口加一个方法(把上面所有的代码的注释给去掉),所有的实现类和代理类里都需要做个实现。这就增加了代码的复杂度。动态代理就可以避免这个缺点。

3 。动态代理

动态代理与普通的代理相比较,最大的好处是接口中声明的所有方法都被转移到一个集中的方法中处理(invoke),这样,在接口方法数量比较多的时候,我们可以进行灵活处理,而不需要像静态代理那样每一个方法进行中转。

动态代理类只能代理接口,代理类都需要实现InvocationHandler类,实现invoke方法。该invoke方法就是调用被代理接口的所有方法时需要调用的,该invoke方法返回的值是被代理接口的一个实现类

代理类:
Java代码  




测试类:
Java代码  




作者: 吴光新    时间: 2013-9-11 13:17
亲,本版主要是以Android源码分享为主,比如android的工程示例源码等,建议不要发表java基础内容
作者: 蓝骑    时间: 2013-9-11 17:27
吴光新 发表于 2013-9-11 13:17
亲,本版主要是以Android源码分享为主,比如android的工程示例源码等,建议不要发表java基础内容 ...

话说我回帖发帖都木有经验了,咋回事{:soso_e141:}{:soso_e141:}{:soso_e141:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2