关于学习代理的一些经验!

最近在学习Java5.0新特性!讲到代理,开始有点晕乎,经老师细心讲解,明白些许,在这里跟大家分享下。
  代理有静态代理动态代理。先说下静态代理!
   先申明一个接口,接着写个方法实现接口,最后写个代理类,同样实现接口。
   package com.reflexTest;
    
   /*模拟静态代理
    * */    
    
    
   /*定义接口*/
     interface stu{
     void student();
     void student(String t);
  }
    
   /**被代理类--必须实现接口
    * */ public class reflexCount implements stu {
    
     public void student() {
       // TODO Auto-generated method stub
      System.out.println( "我在学习");
    }
    
     public void student(String t) {
       // TODO Auto-generated method stub
      System.out.println( "我在学习"+t);
    }
     //测试
     public static void main(String[] args) {
        
      handl p= new handl(); //代理对象
      reflexCount obj= new reflexCount(); //被代理对象
      p.setT(obj);
       //p.student("动态代理");//带参数
      p.student();
    }
  }
   /*代理类---必须实现接口**/
     class handl implements stu{
    stu t; //定义一个接口类型的对象。
            
     //给定Set方法--把被代理对象穿过来
     public void setT(stu t) {
       this.t = t;
    }
    
     public void student() {
       // TODO Auto-generated method stub
      System.out.println( "我在学习之前吃饭!");
       this.t.student();
      System.out.println( "我在学习之后洗澡!");
    }
    
     public void student(String t) {
       // TODO Auto-generated method stub
      System.out.println( "我在学习之前吃饭!");
       this.t.student(t);
      System.out.println( "我在学习之后洗澡!");
    }
    
  }    
先看下上面的代码……
  注意测试部分……
      你会发现,在测试部分没有直接调用被代理类(reflexCount),而是用代理类(handl)的方法(setT())把被代理的类传给代理类,然后通过代理类来调用被代理类的方法,从而实现了在被代理类的方法调用之前或之后做些其他事情。
 
弊端:静态代理的缺点,每个被代理的类都得写对应的代理方法。
解决:动态代理。
                 且听下回分析……

你可能感兴趣的:(java,代理,学习,静态代理,休闲)