zoukankan      html  css  js  c++  java
  • 实现一个JDK代理demo

    JDK代理,非常简单地实现了动态代理(首先是实现对应的InvocationHandler;然后,以接口来为被调用目标构建代理对象,代理对象简介运行调用目标,并提供额外逻辑插入)

    缺点:它是只能以接口为中心的。优点:依赖JDK,更稳定可靠,跟着JDK升级,代码简单。

     

     1 package jesse.test;
     2 
     3 import java.lang.reflect.InvocationHandler;
     4 import java.lang.reflect.Method;
     5 import java.lang.reflect.Proxy;
     6 
     7 interface Hello{
     8     void sayHello();
     9 }
    10 
    11 class HelloImpl implements Hello{
    12 
    13     @Override
    14     public void sayHello() {
    15         System.out.println("my hello");
    16     }
    17     
    18 }
    19 
    20 class MyInvocationHandler implements InvocationHandler{
    21     private Object target;
    22     public MyInvocationHandler(Object target) {
    23         super();
    24         this.target = target;
    25     }
    26     @Override
    27     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    28         System.out.println("proxy invoke sayhello");
    29         Object result = method.invoke(target, args);
    30         return result;
    31     }
    32 }
    33 
    34 public class MyJDKProxy {
    35     public static void main(String[] args) {
    36         HelloImpl hello = new HelloImpl();
    37         MyInvocationHandler handler = new MyInvocationHandler(hello);
    38         //构造代码实例
    39         Hello proxyHello = (Hello)Proxy.newProxyInstance(HelloImpl.class.getClassLoader(), HelloImpl.class.getInterfaces(),handler);
    40         //调用代理方法
    41         proxyHello.sayHello();
    42     }
    43     
    44 }

     

     

  • 相关阅读:
    [Angularjs]视图和路由(一)
    [Angularjs]ng-show和ng-hide
    解决UNIGUI字体太小的问题
    [FireDAC][Phys][MySQL] MySQL server has gone away
    unidbgrid列排序
    在盒子(2CCC)的日子
    咏南MORMOT中间件免费开源
    unidbgrid单元格操作
    国内安卓软件的恶劣环境
    DELPHI纤程的演示
  • 原文地址:https://www.cnblogs.com/atomicbomb/p/9965069.html
Copyright © 2011-2022 走看看