简单的一个动态代理及Aop简单实践实例

动态代理作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。


这里实例的实现主要是通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现的,Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现。


代码如下:
 package com.ruixingsoft;

/**
* 租房接口
*
* @author ledefe
*
*/
public interface Rent {
/**
* 前往查看房子
*/
public void View();

}


package com.ruixingsoft;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
* 房屋中介
*
* @author ledefe
*
*/
public class RentHandler implements InvocationHandler {
private Object rentObj;

public RentHandler(Object obj) {
this.rentObj = obj;
}

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("中介:房屋信息已发布!");
method.invoke(rentObj, args);
System.out.println("中介:客户已接待完!");
return null;
}

}



package com.ruixingsoft;

/**
* A客户-租房
*
* @author ledefe
*
*/
public class ARentImpl implements Rent {

public void View() {

System.out.println("A前往查看房子!");
}

}


package com.ruixingsoft;

import java.lang.reflect.Proxy;

public class RentTest {
/**
* 动态代理测试
*
* @param args
*/
public static void main(String[] args) {
// xx的代理接口:A客户
Rent rent = new ARentImpl();
// xx的代理实现类:房屋中介
RentHandler handler = new RentHandler(rent);
// 实例化一个xx接口的代理
Rent proxy = (Rent) Proxy.newProxyInstance(rent.getClass().getClassLoader(), rent.getClass().getInterfaces(), handler);
proxy.View();
}

}

测试结果:[list]
[*]中介:房屋信息已发布!
[*]A前往查看房子!
[*]中介:客户已接待完!
[/list]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值