//接口类
public interface JieKou {
public void show();
}
//实现类
public class Impl implements JieKou{
@Override
public void show() {
System.out.println("这是Impl实现类");
}
}
//基于jdk代理的思路实现的代理
//代理类实现JieKou,这样代理类也会有一个show()方法
public class DaiLi implements JieKou{
//这里先创建一个被代理的实例
private JieKou jiekou = new Impl();
@Override
public void show() {
System.out.println("使用jdk思路的代理");
//运行到这里相当于去调用了Impl类
jiekou.show();
System.out.println("执行结束");
}
}
//基于cglib的思路实现的静态代理
//思路是使用继承
public class CglibDaiLi extends Impl{
//继承父类的show()方法
@Override
//这里重写了父类的方法
public void show() {
System.out.println("使用cglib思路的代理");
super.show();
System.out.println("执行结束");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//用接口完成的代理
//jdk代理的思路
//创建一个代理对象
//JieKou jieKou = new DaiLi();
//这里其实调用的是代理类中的show()方法
//jieKou.show();
//用继承的方式完成的代理
//cglib的思路
//创建代理对象
Impl impl = new CglibDaiLi();
//调用被重写过的show()方法
impl.show();
}
}