Proxy 模式

1.为对象A提供一种代理,以控制对对象A的访问。


1.代理类需要使用被代理类来做业务逻辑,所以代理类需要包含被代理类的实例,这跟适配器模式是一样的。

   含有真实主题的引用,可以在任何时候操作真实主题,,可以控制真实主题的创建或删除,可以在真实主题被调用前进行拦截或在调用后进行某些操作。

   常会再为代理类和被代理类抽象出一个公共接口。这个接口的目的之一是约束双方的行为,让Proxy必须实现某些方法,而这些方法恰恰是对外公开的主要业务方法。

   不过proxy并不一定要求保持接口的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。

   “增加一层间接层”是软件系统中对许多负责问题的一种常见解决方法。作为间接层的proxy对象便是解决这一问题的常用手段。

   具体proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象作细粒度的控制,有些可能对组件模块提供抽象代理层,在架构层次对对象作proxy。


2.使用代理模式的情况

   远程代理:webservice

   虚拟代理:异步打开网页图片;

   安全代理:控制真实对象的访问权限;

   智能指引代理:附加内务处理;


    http://www.cnblogs.com/chenbw/archive/2010/05/20/1739777.html


3.与其它模式的区别

   相同点:

   对装饰器模式来说,装饰者(decorator)和被装饰者(decoratee)都实现同一个 接口。

   对代理模式来说,代理类(proxy class)和真实处理的类(real class)都实现同一个接口。

   此外,不论使用哪一个模式,都可以很容易地在真实对象的方法前面或者后面加上自定义的方法。

   Proxy、Facade以及Adapter可能都是对对象的一层封装,侧重点不同。

   不同点:

   装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。

   用代理模式,代理类可以对它的客户隐藏一个对象的具体信息。当使用代理模式的时候,常常在一个代理类中创建一个对象的实例。

   而当使用装饰器模式的时候,通常的做法是将原始对象作为一个参数传给装饰者的构造器。

   使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。    

   真实对象隐藏在代理对象内部,而装饰对象是客户代码都要知道的。

   装饰模式的重点在于扩展,适配器和代理模式体现的是封装,代理模式控制是重点。

   Facade针对封装子系统,转化为高层接口,是对多个类的集成、统一适配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值