首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java中的静态代理跟动态代理

2013-11-09 
Java中的静态代理和动态代理Java中的静态代理和动态代理一、引入代理的概念? ? ? 我叫蒙林,在北京租了一间

Java中的静态代理和动态代理

Java中的静态代理和动态代理
一、引入代理的概念

? ? ? 我叫蒙林,在北京租了一间房子。昨天我有事去了广东,当我到了广东后,房东王小三打电话给我说今天该交房租了(合同上写的是今天交房租,且过期不交房租将产生滞纳金),那么我怎么办呢? 于是我打电话给北京的朋友黄河,让他先替我把房租交给房东,那么黄河是以我的名义交的房租。

? ? ? 那么在这一事件中,黄河就是我蒙林的代理(英文为Proxy),当我不方便办理某一件事情的时候,代理可以替我完成。黄河(我的代理)和我都有交房租的这一能力。

?

二、Java中的代理

? ? ? 从面向对象的角度来说,蒙林和黄河各为一个类,他们都有一个交房租的功能,因此我可以让他们都实现同一接口,接口中定义二者的共同功能。

涉及到的类有:

MengLin.java ?——蒙林

HuangHe_Proxy.java ?——黄河

Function.java ?—— 功能类(定义二者共同的方法)

Test.java —— 测试类

?

?

?

package com.biocjm;import com.biocjm.DynamicProxyUtil.Interceptor;public class Test {public static void main(String[] args) {dproxy();}// 动态代理工具类测试public static void dproxy() {Interceptor interceptor = new Interceptor() {@Overridepublic void doBefore() {System.out.println("before method.");}@Overridepublic void doAfter() {System.out.println("after method. ");}};DynamicProxyUtil dynamicProxyUtil = new DynamicProxyUtil(interceptor);dynamicProxyUtil.setInterceptor(interceptor);Object dyProxy = dynamicProxyUtil.getProxy();// 切记,动态代理是基于借口编程的, 因此被代理类一定要实现至少一个接口,否则在类型转换时将出现异常Interceptor interceptor2 = (Interceptor) dyProxy;interceptor2.doAfter();}}

?

?

?

?

?

?

?

?

?

?

热点排行