创建 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方法上做任何的修改。但是对这个方法已经做了增强。这就是之前讲过的 基于接口的动态代理。
但是他也有一个问题。如果我们的类不实现任何接口的时候。他是不能用的
这把接口的实现代码注释掉。
执行就会出现代理异常