Java动态代理
<p style="clear:both;min-height:1em;color:rgb(62,62,62);font-family:'Helvetica Neue',Helvetica,'Hiragino Sans GB','Microsoft YaHei',Arial,sans-serif;font-size:18px;"> <p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;">
<p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;"> Vendor类的定义如下: <p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;">
<p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;"> 代理类BusinessAgent的定义如下: <p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;">
<p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;"> 从BusinessAgent类的定义我们可以了解到,静态代理可以通过聚合来实现,让代理类持有一个委托类的引用即可。 <p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;"> 下面我们考虑一下这个需求:给Vendor类增加一个过滤功能,只卖货给大学生。通过静态代理,我们无需修改Vendor类的代码就可以实现,只需在BusinessAgent类中的sell方法中添加一个判断即可如下所示: <p style="clear:both;min-height:1em;color:rgb(62,sans-serif;font-size:18px;">
java.lang.reflect.InvocationHandler接口的类;一个测试类MainTest。
<pre style="font-family:Menlo;"><span style="font-size:14px;">4.2 vender类,委托方代码如下: <pre style="font-family:Menlo;"><span style="font-size:14px;">
<pre style="font-family:Menlo;"><span style="font-size:14px;">4.3 代理类<span style="color:rgb(62,sans-serif;font-size:18px;">DynamicProxy代码如下: <pre style="font-family:Menlo;"><span style="font-size:14px;"><span style="color:rgb(62,sans-serif;font-size:18px;">
<pre style="font-family:Menlo;"><span style="font-size:14px;"><span style="color:rgb(62,sans-serif;font-size:18px;">4.4 测试类MainTest代码如下: <pre style="font-family:Menlo;"><span style="font-size:14px;"><span style="color:rgb(62,sans-serif;font-size:18px;">
<pre style="font-family:Menlo;"><span style="font-size:14px;"><span style="color:rgb(62,sans-serif;font-size:18px;">4.5 运行结果如下: <pre style="font-family:Menlo;"><span style="font-size:14px;"><span style="color:rgb(62,sans-serif;font-size:18px;"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |