zoukankan      html  css  js  c++  java
  • 阶段3 2.Spring_07.银行转账案例_8 基于接口的动态代理回顾


    创建 Producer 生产者的类



    创建标准。这标准就是接口



    创建消费者的类

    以前的方式,客户直接找生产厂家

    代理商出现以后,怎么去联系代理商

    动态代理


    第一个参数是ClassLoader 第二个参数是interface是字节码类型,第三个是InvocationHandler是一个接口

    代理producer就这么写。代理谁就写谁的getClass().getClassLoader()

    代理谁,就是谁的getClass().getInterfaces()



    s时而用谁写,所以这里我们new一个InvocationHandler()方法



    这里我们只需要干一件事就是:mehtod.invoke(); 
    Objetc第一个参数表示谁的方法。肯定不是被代理对象的方法。

    匿名内部类访问外部成员变量时。外部成员要求是最终的,所以这里用final来修饰


    这样并没有提供增强的代码

    消费者买电脑给了1万块。但是代理商要2千块的提成。生产厂家只能拿到8千块





    测试



    0.8后面加个f。money是float类型的

    消费者拿出1万块购买电脑。经销商分走了2千。 生产厂家得到了8千。


    出现问题的原因是这里看不成是一个float类型了。



    对于生产厂家来说,。他不管。他只管拿到钱 就可以把电脑给你。这个给就是贵经销商。经销商在卖这个产品的时候。他肯定挣钱。


    我们并没有在生产厂家的这个saleProduct方法上做任何的修改。但是对这个方法已经做了增强。这就是之前讲过的 基于接口的动态代理。
    但是他也有一个问题。如果我们的类不实现任何接口的时候。他是不能用的

    这把接口的实现代码注释掉。

    执行就会出现代理异常





     

  • 相关阅读:
    android调试推荐使用BlueStacks模拟器调试Android应用
    目录文件Oracle11g彻底删除
    进程间通信学习APUE学习进程间通信(4)
    android选择Windows 8 下配置Cocos2dx + Android + Eclipse 的开发环境
    windbg API 跟踪
    symchk 获取符号文件(PDB)
    acs for PEAPMSCHAPV2
    peapMSCHAPV2
    vs2005 "Key not valid for use in specified state"
    NetUserGetInfo NetUserAdd
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11353549.html
Copyright © 2011-2022 走看看