静态代理

//接口类
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();
	}
}

 

posted @ 2022-01-17 11:20  奥特曼阿文  阅读(19)  评论(0)    收藏  举报