ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-25 02:01:28  阅读:151  来源: 互联网

标签:真实 角色 对象 代理 模式 new 设计模式


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

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

代理模式结构图

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

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

代理模式分类

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

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

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

代理主题角色:

测试类:

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

真实主题角色(多个):

代理主题角色:

测试类:

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

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

缺点:
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

标签:真实,角色,对象,代理,模式,new,设计模式
来源: https://www.cnblogs.com/YiMingXiaoBuYiMengXiaoNai/p/DesignModeOfStaticProxyMode.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有