Java 动态代理实现通用代理类 AOP

//抽象主题角色
interface Subject {
	public void request();
}
//******************************************************************
//******************************************************************
//******************************************************************
//具体主题角色
public class RealSubject implements Subject {
    //实现方法
	@Override
	public void request() {
		//业务逻辑处理
		System.out.println("实现Subject request方法");
	}

}

//******************************************************************
//******************************************************************
//******************************************************************
public class SubjectHandle implements InvocationHandler {
	//被代理的对象
	private Subject subject;
	
	
	public SubjectHandle(Subject _subject) {
		subject = _subject;
	}


	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		System.out.println("预处理");
		Object obj = method.invoke(subject, args);
		System.out.println("后处理");
		return obj;
	}
}

//******************************************************************
//******************************************************************
//******************************************************************
public static void main(String[] args) {
		// 具体主题角色,也就是被代理类
		Subject subject = new RealSubject();
		// 代理实例的处理Handle
		InvocationHandler handle = new SubjectHandle(subject);
		// 当前加载器
		ClassLoader loader = subject.getClass().getClassLoader();
		// 动态代理
		Subject proxy = (Subject) Proxy.newProxyInstance(loader,  subject.getClass().getInterfaces(), handle);
		// 执行具体主题角色方法
		proxy.request();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值