zoukankan      html  css  js  c++  java
  • Java 动态代理详解

    package com.at221;
    
    //代理设计模式:
    
    interface ClothFactory{
        void product();
    }
    
    class NikeFactory implements ClothFactory{//被代理类:
    
        @Override
        public void product() {
            System.out.println("Nike服装很可靠");
        }
        
    }
    
    class ProxyFactory implements ClothFactory{//代理类:
    
        private NikeFactory nf;
        
        public ProxyFactory(NikeFactory nf){
            this.nf = nf;
        }
        @Override
        public void product() {
            this.nf.product();
        }
        
    }
    
    public class TestProxy {
        public static void main(String[] args) {
            NikeFactory nf = new NikeFactory();
            ProxyFactory pf = new ProxyFactory(nf);
            pf.product();
        }
    }

    下面是利用反射机制进行实现的动态代理:

     
    package com.at221;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    interface Subject{
        void show();
    }
    
    class RealSubject implements Subject{
    
        @Override
        public void show() {
            System.out.println("zhaoning,i love you!!!");
        }
        
    }
    
    class ProxySubject implements InvocationHandler{
        Object obj;
        public Object blind(Object obj){
            this.obj = obj;
            return Proxy.newProxyInstance(obj.getClass().getClassLoader(), 
                                            obj.getClass().getInterfaces(), this);
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            Object returnVal = method.invoke(obj, args);
            return returnVal;
        }
    
    }
    
    public class TestProxy1{
        public static void main(String[] args) {
            RealSubject rs = new RealSubject();
            ProxySubject ps = new ProxySubject();
            Subject rss = (Subject)ps.blind(rs);
            rss.show();
        }
    }
  • 相关阅读:
    航空公司客户价值分析
    电力窃漏电用户自动识别
    信息论基础
    Xgboost
    直线或曲线拟合
    matplotlib中绘图
    pandas中绘图
    matplotlib图形设置
    子图subplot
    时间序列:时间序列理论、时间序列建模
  • 原文地址:https://www.cnblogs.com/zhaoningzyn/p/6835313.html
Copyright © 2011-2022 走看看