装饰器模式,代理模式

来源:互联网 发布:小辣椒淘宝店 编辑:程序博客网 时间:2024/05/16 05:52

装饰器模式:动态地给一个对象添加一些额外的职责或者行为。就增加功能来说,比继承的方式更灵活。
情景:可以通过继承现有对象,对一个已经存在的对象增加行为,但是这样无法控制增加行为的时机和方式。如果可能存在对一个类,不断的增加行为,需要不断的继承,将增加代码管理难度。
适用性:
1:在不影响其他对象的情况下,以动态、透明的方式给对象添加职责。
2:在某个行为的之前或者之后增加行为。例如在某个行为处理数据的前后适用装饰器模式过滤数据。
模式组成结构:
1、抽象组件角色(Component):定义一个对象接口,该接口可以给对象动态增加职责。
2、具体组件角色(ConcreteComponent):被装饰者,定义一个将要被装饰增加功能的类,功能上相当于客户类。
3、抽象装饰器(Decorator):维持一个指向Component的实例,这个实例就是具体组件角色(ConcreteComponent)
4、具体装饰器(ConcreteDecorator):添加职责功能

以上内容只是理论,具体的代码训练,可以去网上找有趣的案例进行训练,个人代码不上传。推荐训练链接:http://www.cnblogs.com/justinw/archive/2007/06/11/779356.html



代理模式:为其他对象提供一种代理,并控制这个对象的访问。B跟C是朋友,A和B是朋友,A喜欢喜欢B,A不能直接访问C,通过B就是A的代理。
适用场景:
    1:远程代理:Proxy类中转换不同地址的编码请求。
    2:虚拟代理:Proxy类中缓存实体信息,延迟对实体的访问。
    3:保护代理:Proxy类中检查访问是否达到权限。
    4:智能指引:Proxy类中设置引用对象
    5:Copy-On-Write代理:
    5种场景中情形都类似上面提到过的A、B与C的关系,不同的是代理内中接口中行为方式不同。
模式组成:
    1:抽象主题角色(SubJect): Proxy 和 RealSubject公共接口
    2:代理角色(Proxy):保存一个RealSubject实例的引用,控制实体的操作。
    3:真实主题角色(RealSubject):定义了代理角色所代表的真实对象。

以上内容只是理论,具体的代码训练,可以去网上找有趣的案例进行训练,个人代码不上传。推荐训练链接:http://blog.csdn.net/hguisu/article/details/7542143
 
 
 
本文纯属个人学习总结,篇幅的大部分内容都来源于网络,也包含个人逻辑思维和开发经验。每个人的水平、层次、出发点不同,看客可能存在一定的误解,有写的不好的地方希望看客能共同交流。
0 0