《Head First Design Patterns》笔记十三:代理模式(Proxy Pattern)

  概念

      代理模式很好理解的一个模式,同时也是应用十分广泛的一个模式。比如常见的远程网络调用。远程客户端调用远程服务端机器的应用。给客户的感觉好像就是在本机上操作一样,这其中就是代理在做工。

      我们先看uml图

 

   客户直接调用代理,代理再通过中间层实现对真实事务的调用。使用接口的目的是为了更加透明的操作对象。

 

实例

    我们来建一个简单的四则运算服务,客户需要远程调用该项服务。那么我们使用webservice或则其他方法来实现对远程服务的连接代理

    对于远程服务来说,基本思路是首先客户提出请求,代理接受请求,并打包该请求(转为文本格式或则二进制,如果遵循soap协议的话,就是转为xml格式),通过tcp/http发送到服务端,服务端接包并解包,响应请求,然后将结果打包发送回客户端,客户端代理收到结果并解包发回客户。如下图

 代码实现

     对于实现远程调用,技术各不一样,现在web service是一个比较通用的标准,不过各语言都另外有其他的访问模式,对于.net来说,我这里采用.net remoting 来实现。

   首先是接口IMath.cs

  

  然后是服务端实现:

  Math.cs

 

 Program.cs 服务端运行程序

 

 

接着就是客户端实现

MathCaculator.cs

 

这里MathCaculator并没有实现IMath接口,这是为了客户调用方便,当然,如果实现IMath接口的话,会更透明点。

调用程序ClientProgram.cs

 

开启服务端,运行客户代码,结果如下:

1+3=4
2-3=-1
4*6=24


下一篇: 《Head First Design Patterns》笔记十四:复合模式(Compound Pattern)

上一篇: 《Head First Design Patterns》笔记十二:状态模式(State Pattern)

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值