码迷,mamicode.com
首页 > 其他好文 > 详细

静态代理和动态代理的区别

时间:2019-06-06 14:12:15      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:运行   接口   manage   反射机制   log   ati   htm   静态代理   运行时   

代理:结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题

按照代理的创建时期,代理类可以分为两种: 

静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。

动态:在程序运行时运用反射机制动态创建而成。(InvocationHandler 的应用)

静态代理缺点:

1)代理类和委托类实现了相同的接口,代理类通过委托类实现了相同的方法。这样就出现了大量的代码重复。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

2)代理对象只服务于一种类型的对象,如果要服务多类型的对象。势必要为每一种对象都进行代理,静态代理在程序规模稍大时就无法胜任了。如上的代码是只为UserManager类的访问提供了代理,但是如果还要为其他类如Department类提供代理的话,就需要我们再次添加代理Department的代理类。

 

https://www.cnblogs.com/baizhanshi/p/6611164.html

静态代理和动态代理的区别

标签:运行   接口   manage   反射机制   log   ati   htm   静态代理   运行时   

原文地址:https://www.cnblogs.com/Eddyer/p/10984270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!