zoukankan      html  css  js  c++  java
  • proxy in java

    [Static]

     1  IFeature.java
     2  ImpicateF.java
     3  Runport.java
     4  StaticProxy.java
     5 
     6  IFeature.java
     7 package UProxy.staticMethod;
     8 public interface IFeature {
     9     public void AccessClouds(String who);
    10 }
    11 
    12  ImpicateF.java
    13 package UProxy.staticMethod;
    14 public class ImpicateF implements IFeature {
    15 
    16     @Override
    17     public void AccessClouds(String who) {
    18         System.out.println(who+" is Accessing Clouds.");
    19     }
    20 }
    21 
    22 Runport.java
    23 package UProxy.staticMethod;
    24 public class Runport {
    25 
    26     public static void main(String[] args) {
    27         String who="Tomas";
    28         IFeature i=new ImpicateF();
    29         
    30         StaticProxy sp=new StaticProxy(i);
    31         sp.AccessClouds(who);
    32     }
    33 
    34 }
    35 
    36 
    37 StaticProxy.java
    38 package UProxy.staticMethod;
    39 public class StaticProxy implements IFeature{
    40 
    41     public IFeature target;
    42     
    43     public StaticProxy(IFeature target){
    44         this.target=target;
    45     }
    46     
    47     @Override
    48     public void AccessClouds(String who) {
    49         
    50         System.out.println(who+" pre access clouds.");
    51         target.AccessClouds(who);
    52         System.out.println(who+" aft access clouds.");
    53     }
    54 
    55 }

    [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 ");
        }
    
    }
  • 相关阅读:
    C & 指针
    分析Android (build/core/*.mk脚本)
    C#.net调用axis2webService
    MongoDB 配置文件启动
    mongodb 简单部署方案及实例
    MongoDB 权限认证
    MongoDB索引介绍
    mongodb 全文检索
    MongoDB 覆盖索引查询
    mongodb MongoDB 聚合 group
  • 原文地址:https://www.cnblogs.com/rojas/p/8558203.html
Copyright © 2011-2022 走看看