Producer假设为生产商,消费者要购买电脑不需要从生产商那里买,只需要从经销商手里买电脑即可,那么Producer就成为被代理对象,
IProducer这个接口相当于经销商,经销商也要挑生产厂家,那些符合经销商要求的才会被它代理。所以用接口来模拟经销商,此时 经销商相当于代理对象。
经销商从生产厂家拿货卖出去需要有提成,所以在生产厂家类的saleProduct方法中,代理商需要对这个方法进行增强,于是有了下面的代码:
```java
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {}
这个方法指的是当前执行的方法,所有被代理对象的方法都会经过这个方法进行增强。可以用if那个判断来拦截不想要的方法。然后进行增强就可以。