zoukankan      html  css  js  c++  java
  • 设计模式之GOF23代理模式03

    动态代理

    public class StarHandler implements InvocationHandler{
      Star realStar;
     public StarHandler(Star realStar) {
       this.realStar = realStar;
      }
     @Override
     public Object invoke(Object proxy, Method method, Object[] args)
       throws Throwable {
      Object obj=null;
      System.out.println("面谈");
      System.out.println("签合同");
      //核心代码
      if(method.getName().equals("sing"))
      {
       obj=method.invoke(realStar, args);
      }
      System.out.println("收尾款");
      return obj;
     }
    }
    public interface Star {
     /**
      * 面谈
      */
      void confer();
      /**
       * 签合同
       */
      void signContract();
      /**
       * 唱歌
       */
      void sing();
      /**
       * 收尾款
       */
      void coleectMoney();
    }
    public class RealStar implements Star {
      private String name;
      
     public RealStar(String name) {
       this.name = name;
      }
     @Override
     public void sing() {
      System.out.println(this.name +"唱歌");
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     @Override
     public void confer() {
    System.out.println("RealStar.confer()");  
     }
     @Override
     public void signContract() {
    System.out.println("RealStar.signContract()");  
     }
     @Override
     public void coleectMoney() {
    System.out.println("RealStar.coleectMoney()");  
     }
    }
    public class Client {
      public static void main(String[] args) {
       Star realStar =new RealStar("Jay");
       StarHandler handler=new StarHandler(realStar);
       Star proxy=(Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[] {Star.class},handler );
          proxy.sing();
      }
    }
    解析动态代理过程
     
  • 相关阅读:
    文件操作_1-24 选择题
    文件操作_1-22 选择题
    文件操作_1-21 选择题
    druid与知乎平台
    b树和b+树
    mybatis generator的generatorConfig.xml配置详解
    logback日志配置文件
    单链表每k个节点为一组进行反转(最后不满k个时不反转)
    单链表每k个节点一组进行反转(最后不足k个也反转)
    shell 结合expect实现ssh登录并执行命令
  • 原文地址:https://www.cnblogs.com/code-fun/p/11332330.html
Copyright © 2011-2022 走看看