【4.0】静态代理和动态代理【租房问题】

  问题:房东类和中介类都有一个租房的方法,但房东租房一般是让中介代理的,即我们用户一般是通过中介租到房的。那么房东和中介就必须有一个共同的

接口(该接口定义共同的租房方法),而中介类中的租房方法会调用房东类的租房方法,这样用户租房的时候只需要通过调用中介的租房方法便可以间接调

用中介类的租房方法。并且中介类中的租房方法内在调用房东的租房方法前后可以做自己的操作。

 

1.静态代理,过于简单,故略。

2.动态代理:

package reflect;
import java.lang.reflect.*;
 
//定义项目接口
interface Rent {
    public void say(String name, int age);
}
 
// 定义真实项目
class Fangdong implements Rent {
    public void say(String name, int money) {
        System.out.println("中介" + name + "赚了" + money + "元");
    }
}
 
class Zhongjie implements InvocationHandler {
    private Object obj = null;
 
    public Object bind(Object obj) {
        this.obj = obj;
        return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
                .getClass().getInterfaces(), this);
    }
    
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
    	 //  在代理真实对象前我们可以添加一些自己的操作
        System.out.println("before rent house");
        
//        System.out.println("Method:" + method);
        
        //    当代理对象调用真实对象的方法时,其会自动的跳转到代理对象关联的handler对象的invoke方法来进行调用
        method.invoke(this.obj, args);
        
        //  在代理真实对象后我们也可以添加一些自己的操作
        System.out.println("after rent house");
        
        return null;
    }
}
 
public class Test {
    public static void main(String[] args) {
    	Zhongjie demo = new Zhongjie();
        Rent rent_zhongjie = (Rent) demo.bind(new Fangdong());
        rent_zhongjie.say("租房", 2000);
    }
}

  

2.1测试结果

 

转载于:https://www.cnblogs.com/chxbar/p/6703382.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值