• 阶段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方法上做任何的修改。但是对这个方法已经做了增强。这就是之前讲过的 基于接口的动态代理。
    但是他也有一个问题。如果我们的类不实现任何接口的时候。他是不能用的

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

    执行就会出现代理异常





     

  • 相关阅读:
    Java 环境变量配置
    C# 怎样判断一个字符串的编码类型
    ASP.NET MVC Razor视图引擎基础语法
    Silverlight 访问外部程序
    Silverlight 换肤的实现
    Silverlight初始动画 加载动画
    Silverlight App中线程同步
    .net反射简介
    FLASH 中文显示乱码
    [原创]开源Word读写组件DocX,通过word模板,导出用户简历使用示例
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11353549.html
Copyright © 2020-2023  润新知