忿媚饱 发表于 2025-6-6 21:02:20

对于装饰器模式与代理模式的个人理解

对于这两个十分接近的设计模式,确实容易产生困惑,代理模式和装饰器模式看起来十分相似,都是由两个类实现相同的接口,然后一个类套另一个类。这件事足足困扰了我5分钟之久,在此总结一下它们的差别。
目的不同

装饰器模式相当于主动可选的代理模式,是对原本功能的拓展
当你想要增强你的类,给你的类增加新功能的话,你就该使用装饰器模式了。
装饰器模式能在不影响原本类的情况下,为原本类增添额外的功能。
代理模式相当于被动的装饰器模式,是对原本功能的完善
代理模式可以代理初始化极耗时间的“重量级”类,使其在进行常规操作时由代理类代劳,当必须进行初始化时,由代理类进行初始化并加载先前的变化,可以将卡顿分散至调用时。
代理模式可以在不影响原本类的情况下,为原本类增添额外的功能(比如记录日志)。
用法不同

装饰器模式由外部调用,可以自由选择是否使用装饰器,new C(new B(new A())) 和 new C(new A()) 都是可行的(A 为被装饰类)。
代理模式为内部调用,由代理模式内部调用被代理对象。单独的被代理对象很可能功能不全,甚至根本就无法被外部创建,外部调用通常也是直接调用代理类。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

韶侪 发表于 2025-11-22 14:35:30

感谢,下载保存了

桂册 发表于 2025-11-23 10:13:13

很好很强大我过来先占个楼 待编辑

万俟谷雪 发表于 2025-11-26 18:19:09

热心回复!

骆贵 发表于 2025-12-20 20:11:02

感谢分享

韩素欣 发表于 2025-12-21 05:14:20

yyds。多谢分享

济曝喊 发表于 2025-12-24 22:17:57

感谢发布原创作品,程序园因你更精彩

蒲善思 发表于 2026-1-10 07:03:26

鼓励转贴优秀软件安全工具和文档!

挡缭 发表于 2026-1-18 14:16:36

热心回复!

庞悦 发表于 2026-1-19 15:46:42

这个有用。

赀倦 发表于 2026-1-21 11:29:47

很好很强大我过来先占个楼 待编辑

采序 发表于 2026-1-21 22:57:34

感谢分享,下载保存了,貌似很强大

向梦桐 发表于 2026-1-22 11:05:04

新版吗?好像是停更了吧。

骆贵 发表于 2026-1-24 05:34:39

鼓励转贴优秀软件安全工具和文档!

汹萃热 发表于 2026-1-26 06:57:37

前排留名,哈哈哈

窟聿湎 发表于 2026-1-27 02:51:07

东西不错很实用谢谢分享

空娅芬 发表于 2026-1-28 03:53:41

谢谢分享,辛苦了

豌笆 发表于 2026-1-28 10:14:42

懂技术并乐意极积无私分享的人越来越少。珍惜

翱龟墓 发表于 2026-2-1 13:28:51

感谢分享,下载保存了,貌似很强大

屠焘 发表于 2026-2-3 03:04:12

很好很强大我过来先占个楼 待编辑
页: [1] 2
查看完整版本: 对于装饰器模式与代理模式的个人理解