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 ");
        }
    
    }
  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/rojas/p/8558203.html
Copyright © 2011-2022 走看看