自学Java第54天
终于学到动态代理了
这应该是JavaSE里面最难懂的知识点了
学它之前最好先弄懂装饰设计模式
什么是装饰设计模式?
用简单的一句话来说明就是:
装饰者,被装饰者,装饰者将方法增强。
如何理解这句话?
就可以用Java中的继承来理解:
子类相当于装饰者
父类相当于被装饰者
子类重写父类相当于方法增强
只不过就代码程层面而言
装饰设计模式比继承更加地具有拓展性
动态代理和装饰设计模式比较像
代理类就相当于装饰者
被代理类就相当于被装饰者
严格上说装饰设计模式就是一种静态代理
如何理解静态动态?
静态就是代理类是已经创建了的
动态就是代理类本身是没有创建的
那动态代理中代理类对象是如何获取的呢?
代理:Proxy,本身就是Java里的一个类
它有一个静态方法newProxyInstance()
将这个方法完全弄懂了也就弄懂了动态代理
其中该方法有三个参数:
被代理对象对应的类加载器
被代理对象对应的接口
其中都是利用反射技术获取对应的Class对象
还有一个InvocationHandler接口
调用处理器,它里面有一个invoke方法
该方法就是补充说明第二个参数接口的
根据具体的业务填充上业务逻辑
总之还是得多敲代码,多练几遍多写几遍就好了
终于学到动态代理了
这应该是JavaSE里面最难懂的知识点了
学它之前最好先弄懂装饰设计模式
什么是装饰设计模式?
用简单的一句话来说明就是:
装饰者,被装饰者,装饰者将方法增强。
如何理解这句话?
就可以用Java中的继承来理解:
子类相当于装饰者
父类相当于被装饰者
子类重写父类相当于方法增强
只不过就代码程层面而言
装饰设计模式比继承更加地具有拓展性
动态代理和装饰设计模式比较像
代理类就相当于装饰者
被代理类就相当于被装饰者
严格上说装饰设计模式就是一种静态代理
如何理解静态动态?
静态就是代理类是已经创建了的
动态就是代理类本身是没有创建的
那动态代理中代理类对象是如何获取的呢?
代理:Proxy,本身就是Java里的一个类
它有一个静态方法newProxyInstance()
将这个方法完全弄懂了也就弄懂了动态代理
其中该方法有三个参数:
被代理对象对应的类加载器
被代理对象对应的接口
其中都是利用反射技术获取对应的Class对象
还有一个InvocationHandler接口
调用处理器,它里面有一个invoke方法
该方法就是补充说明第二个参数接口的
根据具体的业务填充上业务逻辑
总之还是得多敲代码,多练几遍多写几遍就好了
动态代理,JavaSE最难懂的知识点
https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2Fig0PsSPYWAZdyfYTdJhE-w
全部评论
讲的还不错吧,蛮清晰的,顺带问一下,装饰设计模式是装饰器模式吗?
楼主有看视频吗
相关推荐
点赞 评论 收藏
分享