[Static]

  IFeature.java
ImpicateF.java
Runport.java
StaticProxy.java IFeature.java
package UProxy.staticMethod;
public interface IFeature {
public void AccessClouds(String who);
} ImpicateF.java
package UProxy.staticMethod;
public class ImpicateF implements IFeature { @Override
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
}
} Runport.java
package UProxy.staticMethod;
public class Runport { public static void main(String[] args) {
String who="Tomas";
IFeature i=new ImpicateF(); StaticProxy sp=new StaticProxy(i);
sp.AccessClouds(who);
} } StaticProxy.java
package UProxy.staticMethod;
public class StaticProxy implements IFeature{ public IFeature target; public StaticProxy(IFeature target){
this.target=target;
} @Override
public void AccessClouds(String who) { System.out.println(who+" pre access clouds.");
target.AccessClouds(who);
System.out.println(who+" aft access clouds.");
} }

[Dynamic]

 IFeature.java
ImpicateF.java
ProxyFactory.java
Rundyport.java IFeature.java
package UProxy.dyMethod;
public interface IFeature {
public void AccessClouds(String who);
} ImpicateF.java
package UProxy.dyMethod;
public class ImpicateF implements IFeature { @Override
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
} } ProxyFactory.java
package UProxy.dyMethod;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; public class ProxyFactory {
public Object target; public ProxyFactory(Object target){
this.target=target;
}
public Object getProxyInstance(){
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler(){ @Override
public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
System.out.println("transaction begin.");
Object returnValue = arg1.invoke(target, arg2);
System.out.println("transaction end.");
return returnValue;
}});
}
} Rundyport.java
package UProxy.dyMethod;
public class Rundyport { public static void main(String[] args) { IFeature ifs= new ImpicateF();
IFeature pf=(IFeature)new ProxyFactory(ifs).getProxyInstance();
pf.AccessClouds("QUEEBKE"); } }

[CG]

// add spring-core-xxx.jar

ImpicateF.java
ProxyFactory.java
Runcgport.java ImpicateF.java
package UProxy.cglibMethod;
public class ImpicateF {
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
}
} ProxyFactory.java
package UProxy.cglibMethod;
import java.lang.reflect.Method; import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy; public class ProxyFactory implements MethodInterceptor { Object target;
public ProxyFactory(Object target){
this.target=target;
} public Object getInsataceProxy(){
Enhancer en=new Enhancer();
en.setSuperclass(target.getClass());
en.setCallback(this);
return en.create();
} @Override
public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable { System.out.println("transaction 01");
Object o=arg1.invoke(target, arg2);
System.out.println("transaction 02");
return o;
} } Runcgport.java
package UProxy.cglibMethod; public class Runcgport { public static void main(String[] args) {
ImpicateF imf= new ImpicateF();
ImpicateF imf1=(ImpicateF)new ProxyFactory(imf).getInsataceProxy();
imf1.AccessClouds("pizz ");
} }

最新文章

  1. es6之变量的解构赋值
  2. [POJ2069]Super Star(模拟退火)
  3. Memcache的总结介绍和一些命令的总结
  4. VedioCaptureHelper
  5. Jquery 中toggle的用法举例
  6. UVA 10325 lottery 容斥原理
  7. python自定义排序函数
  8. Activity生命周期方法调用finish后的不同表现
  9. html网页中加载js脚本 下载下来是乱码(文件编码格式)
  10. selenium2 python自动化测试实战(回归测试)
  11. gulp详细入门
  12. C++: 带参数回调函数和不带参数的回调函数;
  13. openstack 之~keystone之网关协议
  14. idea软件快速设置主题颜色
  15. 《ASP.NET MVC企业实战》(三)MVC开发前奏
  16. answerOpenCV轮廓类问题解析
  17. Docker logs 命令
  18. 订阅号助手App发布 手机也能管理公众号了
  19. LeetCode--112--路径总和
  20. 我所理解的event loop

热门文章

  1. Spark RDD概念学习系列之典型RDD的特征
  2. rel= "noopener"
  3. Excel基础视频教程在线观看
  4. 跟着8张思维导图学习javascript (转)
  5. iOS-Core-Animation-Advanced-Techniques/12-性能调优/性能调优.md
  6. C# 正则表达式大全(转载)
  7. 凸多边形 HRBUST - 1429 计算几何_凸包_未调完
  8. Java基础之Colloction
  9. HDU 1828 Picture (线段树:扫描线周长)
  10. python3 将两个列表生成一个字典