设计模式

在设计模式中,一直把装饰和代理模式 ,容易搞混。今天有点时间,大概写下他们的区别:

    首先说一下容易搞混的地方,就是在代码实现是:它们装饰和代理它们两个都是实现了和原始对象同一个借口,具体来说:装饰者和被装饰者都实现同一个 接口,代理类和真实处理的类都实现同一个接口。

    1.两个从代码实现角度来说非常类似,我们已 原对象、代理对象、装饰对象。来说的话,它们唯一的区别是:装饰模式是把原始对象作为一个参数传给装饰对象的构造器中,在使用时我首先需要new 出一个原始对象,然后在new出一个装饰对象,并且把在new装饰对象时需要把刚new出的原始对象传入装饰对象中。代理模式是把原始对象当做自己的一个属性,我们在使用时直接new代理对象就可以了。代理对象内部会new一个原始对象。

    2.从字面理解上说:装饰是增强原始对象的功能,代理是控制原始对象的访问。

通俗的说可以通过现实中的一个小事情来说明:

        你是北漂一个,你现在要在北京租房子,你可能碰到这两种情况,1.你找朋友或熟人帮你租房,然后你的朋友带着你去看房东那里房子,你满意,ok没有问题(当然不满意,怎么办,接着找),你和房东直接签了一年合同,大家都高兴,因为你朋友和房东是关系铁,可能钱上你就能节省一些。2.你找中介帮你最房子,然后中介带你看房子,你满意,ok没有问题,你、中介和房东一起签个合同。如果不满意,可以中介可能不会让你和房东见面(及时见面也必须有他在场的情况下,当然你私下见面,他就不知道了,但前提是你想法设法的搞到房东的引用,哦不是是房东的电话或者微信qq啥的,不过实际中租房者还是很聪明的,东东脑筋还是有可能搞到房东的联系方式的,我就见过这样的事情,他通过中介看房,说是不满意,然后不知怎么私下的搞到房东的电话,两人一拍就和绕过中介,把合同签了。节省了一大笔中介费呀,但是这事被中介知道了,中介那个不依不饶的.....)。

    上面的两种情况,1就是装饰模式。2就是代理模式。代理模式就是,他想法设法的不让你知道原始对象,就是说原始对象的引用,他不告诉你。所以原始对象的new就有他自己完成。装饰模式那你可以拿到原始对象,只是增强了原始对象的功能,针对租房来说,就是帮你节省了一些money,

    唉! 写的有点乱了。就到这了今天。

 

转载于:https://my.oschina.net/u/259387/blog/910782

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值