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();
      }
    }
    解析动态代理过程
     
  • 相关阅读:
    ThreadLocal
    贪心算法
    KMP
    多线程设计模式
    String 为什么是不可变的
    6-Ubuntu—截屏与截取选定区域
    5-Ubuntu—查看进程并关闭进程
    4-python基础—查看模块所在位置(适应于任何操作系统)
    4-Ubuntu—终端下重启与关机
    3-python基础—enumerate()
  • 原文地址:https://www.cnblogs.com/code-fun/p/11332330.html
Copyright © 2011-2022 走看看