2022-04-25-设计模式之代理模式-静态代理模式

发布时间:2022-06-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了2022-04-25-设计模式之代理模式-静态代理模式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

java设计模式之代理模式-静态代理模式学习整理

代理模式:由于某些原因需要为其他对象提供一个代理,通过该代理实现控制对该对象的访问的目的。 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

代理模式结构图

2022-04-25-设计模式之代理模式-静态代理模式

代理模式主要角色 1.抽象主题(Subject)角色 2.真实主题(RealSubject)角色 3.代理(Proxy)角色

为什么要用代理模式? 1)中介隔离作用;2)开闭原则,增加功能。

代理模式分类

2022-04-25-设计模式之代理模式-静态代理模式

核心两点:1)真实对象和代理对象需要实现同一个接口;2)代理对象需要持有真实对象的引用。

举例理解: 1)以租房为例,房东只需要考虑处理自己的房子交给中介即可,其余的都是由中介充当代理同租客进行签协议,带租客看房子,等等。 2)真实对象–>你,代理对象–>婚庆公司,接口–>结婚 new WeddingCompany(new Me()).marry(); 即 new ProxyObject(new RealObject()).interfaceDefinedFun();

代码实现方式: (1)继承关系(存在缺陷) 真实主题角色:

2022-04-25-设计模式之代理模式-静态代理模式

代理主题角色:

2022-04-25-设计模式之代理模式-静态代理模式

测试类:

2022-04-25-设计模式之代理模式-静态代理模式

(2)接口实现(优化) 抽象主题角色:

2022-04-25-设计模式之代理模式-静态代理模式

真实主题角色(多个):

2022-04-25-设计模式之代理模式-静态代理模式

代理主题角色:

2022-04-25-设计模式之代理模式-静态代理模式

测试类:

2022-04-25-设计模式之代理模式-静态代理模式

总结: 使用了静态代理模式情况下,我们没有修改真实角色类中的业务代码,而是选择以代理类的方式增强了它的功能,耦合度低,可扩展性好。静态代理由于不需要通过反射获取目标对象,所以性能也更好。 但代理模式会造成系统设计中类的数量增加,在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢,同时也增加了系统的复杂度。

优点:真实角色也就是业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。

缺点: 1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。 2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

参考博客: 1)https://blog.csdn.net/S_yyuan/article/details/121561438; 2)https://blog.csdn.net/qq_53311045/article/details/122156602; 3)https://blog.csdn.net/yz1925506412/article/details/123667565; 4)kkb-wln-teacher直播公开课:https://www.kaikeba.com/open/item?c=1463

脚本宝典总结

以上是脚本宝典为你收集整理的2022-04-25-设计模式之代理模式-静态代理模式全部内容,希望文章能够帮你解决2022-04-25-设计模式之代理模式-静态代理模式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: