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();
      }
    }
    解析动态代理过程
     
  • 相关阅读:
    gbk与utf-8转换
    gdb注意事项
    Ubuntu导入证书
    Ubuntu 修改hosts
    GDB配置与.gdbinit的编写
    linux中用户的主目录~
    关于C++构造函数初始化顺序
    C++中的static关键字的总结
    Flutter移动电商实战 --(2)建立项目和编写入口文件
    Flutter移动电商实战 --(1)项目学习记录
  • 原文地址:https://www.cnblogs.com/code-fun/p/11332330.html
Copyright © 2011-2022 走看看