对代理模式和装饰模式异同点的理解

本文探讨了设计模式中的代理模式与装饰模式之间的关键区别,包括名称、概念和应用实例。通过对比,帮助读者更好地理解这两种模式在代码结构、意图表达和功能扩展上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相同点

1.被代理类和代理类实现相同接口,被装饰类和装饰类同样实现相同接口。

2.代理类以组合形式持有一个被代理类对象,装饰模式亦是如此。

不同点

1.名称不同。别笑,这真的是一个不同点,规范的命名能够让其他程序员直接了解你的意图,提高代码可读性。通常意义上讲,代理通常是对对象做访问控制,也可以说是限制,而装饰是在已有行为上增添新行为。换言之,我吃了加了樱桃的蛋糕,肯定吃到了蛋糕本身。而我让明星代理给明星传话,他未必会传。

2.概念不同。装饰模式更接近继承的概念,没错,它设计出来确实是为了解决类爆炸问题,也并没有用继承。但是,加了樱桃的蛋糕是蛋糕,加了樱桃又浇了奶油的蛋糕也是蛋糕,它们是is a的关系。而明星代理并不是明星,他只是个传话的。设计模式本身是独立于程序的,我觉得思考设计模式的时候不要马上想到程序的语法和概念,设计模式,更多的是贴近生活场景。

我个人认为,学设计模式,要了解他们的结构和设计动机,这样有助于你更快理解他人的设计。同时又要忘记它们,不要拘泥于任何一种模式,东西学死了就不好用了。只要记得他们的最终目的并不要违背这个就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值