java动态代理

1、首先要明白静态代理的作用

    1、我们有一个字体提供类,有多种实现

java动态代理

java动态代理

java动态代理

java动态代理

现在我们希望给他加上一个缓存功能,我们可以用静态代理来完成,

java动态代理

java动态代理

    当然,我们直接修改FontProviderFromDisk类也可以实现目的,但是我们还有FontProviderFromNet, FontProviderFromSystem等多种实现类,一一修改太过繁琐且易出错。况且将来还可能添加日志,权限检查,异常处理等功能显然用代理类更好一点。

 

然而为什么要用动态代理?
    考虑以下各种情况,有多个提供类,每个类都有getXxx(String name)方法,每个类都要加入缓存功能,使用静态代理虽然也能实现,但是也是略显繁琐,需要手动一一创建代理类。

java动态代理

使用动态代理怎么完成呢?

java动态代理

 

 

 

 

 

 

    

转载于:https://my.oschina.net/hcy8888/blog/1647160