社区
Java SE
帖子详情
求教装饰模式和代理模式的区别
jclworkwoyo2
2010-04-19 10:43:16
这段时间学习设计模式,觉的这两个模式功能十分的类似,装饰模式是对原对象的功能增强,代理模式是原来对象的一个替身,可是代理模式中这个代理类也可以增强原有类的功能,这不就和装饰模式功能一样了吗,事物存在就有他的道理,所以问题是我认识不深刻,求教各位给予指点!~!~!~!~
...全文
862
23
打赏
收藏
求教装饰模式和代理模式的区别
这段时间学习设计模式,觉的这两个模式功能十分的类似,装饰模式是对原对象的功能增强,代理模式是原来对象的一个替身,可是代理模式中这个代理类也可以增强原有类的功能,这不就和装饰模式功能一样了吗,事物存在就有他的道理,所以问题是我认识不深刻,求教各位给予指点!~!~!~!~
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wrong1111
2012-02-24
打赏
举报
回复
[Quote=引用 21 楼 chaoweiyi 的回复:]
1.装饰模式:对被装饰的对象增加额外的职责,满足里氏代换原则(子类可以代替父类)
如:杯子生产线,杯子必须可以装水,在生产线上可以给杯子涂颜色,加杯盖,但要保证杯子可以装水。
2.代理模式:对被代理的对象提供访问控制。
如:客户订购商品,可以直接从厂家订购,也可以从网上商城订购,网上商城是厂家的代理,从网上商城订购商品,商城可以对商品进行控制,不交钱不给商品,人不在不给商品,也可以赠送……
[/Quote]
这个比较容易理解。。。
chaoweiyi
2012-02-24
打赏
举报
回复
1.装饰模式:对被装饰的对象增加额外的职责,满足里氏代换原则(子类可以代替父类)
如:杯子生产线,杯子必须可以装水,在生产线上可以给杯子涂颜色,加杯盖,但要保证杯子可以装水。
2.代理模式:对被代理的对象提供访问控制。
如:客户订购商品,可以直接从厂家订购,也可以从网上商城订购,网上商城是厂家的代理,从网上商城订购商品,商城可以对商品进行控制,不交钱不给商品,人不在不给商品,也可以赠送你额外的礼品,代金券。
nj_dobetter
2012-02-24
打赏
举报
回复
很多模式,虽然语义上有一些区别,在实现上基本差不多,无非覆盖、抽象接口、继承扩展这几个方法。
jiakai0419
2012-01-16
打赏
举报
回复
[Quote=引用 11 楼 bao110908 的回复:]
用途不一样吧
装饰模式是指增强被包装对象的功能
代理模式是修改被代理对象的行为
[/Quote]
+1
denghaiweidhw
2012-01-16
打赏
举报
回复
只能语义上区别,
装饰模式,像化妆:无论你怎么画,你都得把妆画到脸(或其他对象)上,你可以画眉毛,也可以修眉毛,但连脸都没有,你就不能说你在化妆了,也就是说不能说是用装饰模式。
代理模式,像买票:你买火车票可以去代理那买,但都知道国内什么不良商贩都有,如果碰到假代理,根本就是卖假票,也就是说没有真票,但他照样是在代理只不过,因为你不知道它是真是假,具体的代理操作你不知道,完全透明,不像装饰,还得提供个脸进去。
换句话说,装饰就是对一个被装饰对象做有限的事,而且必须是真的做了,不然等于没用,代理就是对被代理的对象做任何事,包括什么都不做,甚至把代理的对象都给灭了。两者程度和范围不同。
china1314920
2011-08-20
打赏
举报
回复
学习学习
daijope
2011-08-20
打赏
举报
回复
确实有一点疑惑,
龙四
2011-05-30
打赏
举报
回复
很多设计模式UML图上看起来都差不多,但是最主要的区别在于他们的
意图
wp500
2011-05-30
打赏
举报
回复
效果差不多。 不过出发点不一样。
装饰模式:将原有的事物增加新的功能。我觉得对于使用者来说他看到的是装饰后的效果。而使用者并不关系原来的样子。
代理模式:用户通过代理来访问目标的功能,使用者关心的是原始功能都有什么功能。
举个例子 A类是原始功能的类, B是装饰模式中对A类的扩展之后的类, C是代理模式中对A类的扩展
对于用户调用来说。
使用装饰模式, 用户更关系的是B的功能(包含A的原始功能)。
使用代理模式,用户更关心A的功能。并不关系(c的功能)。
以上是本人的理解
zfq642773391
2010-04-19
打赏
举报
回复
装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;
装饰模式应该为所装饰的对象增强功能;
代理模式对代理的对象施加控制,并不提供对象本身的增强功能
Mars_Ma_OK
2010-04-19
打赏
举报
回复
支持顶顶吧..
火龙果被占用了
2010-04-19
打赏
举报
回复
用途不一样吧
装饰模式是指增强被包装对象的功能
代理模式是修改被代理对象的行为
jclworkwoyo2
2010-04-19
打赏
举报
回复
谢谢楼上的指点!~!~!~
weberwong
2010-04-19
打赏
举报
回复
最常见的代理就是权限判断了,权限就肯定是限制了,其余例子我一时也不好举,实际项目中代理用的并不多
别考虑咱们上网时候用的那个代理,那个真不是这个意思
jclworkwoyo2
2010-04-19
打赏
举报
回复
模式的一个重要作用是简化其他程序员对你程序的理解 谢谢!~ 这点倒是没想到的。 还有代理类不仅有原有类的限制功能吧 !~!~
weberwong
2010-04-19
打赏
举报
回复
[Quote=引用 6 楼 jclworkwoyo2 的回复:]
现在有点感觉是 他们的实现机制是一样的 不一样的是他们所做的事情的功能目的差别 (这样一想这两个模式有一个多余的了,只要存在一个让他在不同地方做不同的事就好了???????????)
[/Quote]
实现机制确实是一样的,你可以看到他们的实例代码重复是很多的
但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制,虽然代码很可能相同,但如果你都叫他们装饰,别人会很迷惑的
jclworkwoyo2
2010-04-19
打赏
举报
回复
现在有点感觉是 他们的实现机制是一样的 不一样的是他们所做的事情的功能目的差别 (这样一想这两个模式有一个多余的了,只要存在一个让他在不同地方做不同的事就好了???????????)
weberwong
2010-04-19
打赏
举报
回复
作限制当作增加功能。。这个也可以这么想吧,不过通常不是
增加功能和限制功能当然是相反了,这个不用涉及到技术领域也是一样的吧
另外你说的增加事务管理确实是装饰
而代理一般是:用原有类你可以访问某对象,加了代理后可能就要判断一下你的权限,如果没权限就不让你访问这类事
jclworkwoyo2
2010-04-19
打赏
举报
回复
这个限制可不可以也理解为增加功能呢 比如Spring中代理事务管理,理解为对被代理类增加事务管理功能 和理解为被代理类限制它的操作要有事务管理是一样呢,语义相反是什么概念呢 我不理解!~!~!~
weberwong
2010-04-19
打赏
举报
回复
装饰是在原有类上增加功能用的
代理是对原有类作限制用的
机制差不多,但语义上方向相反
加载更多回复(2)
结构型设计模式
在设计模式中,
代理模式
可以分为静态代理和动态代理。静态代理是指代理类在编译时就已经确定,而动态代理是指代理类在运行时动态生成。 一、静态代理的原理解析
代理模式
(Proxy Design Pattern)的原理和代码实现都...
安卓面试题选择题,2024金九银十面试讴歌系列,带你彻底搞懂Android启动速度优化
我们在面试过程中,一定不要和面试官进行争论或者反问面试官(虚心
求教
还是可以的)。如果面试官的水平或者度量还好的话可能没什么关系,但是也不能排除哪些个水平一般或者度量较小的面试官,你和他争论是没有任何...
Django框架
Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。...Django文档Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。
从投递到拿到offer,这份Android面试秘籍一文全解
但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。面试过程一定要有礼貌!
从投递到拿到offer,这份Android面试秘籍一文全解,2021年阿里+头条+腾讯大厂Android笔试真题
切勿答非所问,偷换概念。当面试官提出一个你并不是很了解的问题时候,即使冷场也不要答非所问,进行偷换概念。因为面试最讲究的就是真诚二字。...卖弄自己的知识,日后和这种人合作起来会不会很费力? ..
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章