设计模式-远程外观模式(Remote Facade)

概念

为细粒度对象提供粗粒度的外观来改进网络上的效率。


远程调用的开销很大,如数据可能需要编组,安全检查,数据包需要路由等等。
远程外观是一个粗粒度的外观,它建立在大量的细粒度对象之上。细粒度对象没有提供远程接口。
远程外观不包括领域逻辑,远程外观的功能只是把粗粒度的方法转换到底层的细粒度对象上。

运行机制

  • 如地址对象中,远程外观采用getAddressData方法代替了常规的getCity等方法,充当了批量访问器。在比如一个订单外观可以获取一个订单及所有订单项,以及其他客户信息。
  • 大量的数据传输需要一种传送方式,如果细粒度对象在传输两端并且是可以序列化的,则可以直接拷贝传输。
  • 建议杜绝小粒度的远程外观,一般一个中型系统需要1个远程外观,对于一个大型系统需要6个左右的远程外观。
  • 远程外观的设计基于特定客户的需要,最求用户操作的简单化,而不是简化系统,因此即使底层执行了相同的功能,远程外观的设计也可能不同。
  • 远程外观区分有状态和无状态的,无状态的可以组成池提高效率,如B2C情况下,有状态的需要保持回话状态,可以利用客户会话状态模式和数据库会话状态模式。
  • 远程外观中不应该包括领域逻辑。如需要工作流或者协作逻辑,可以单独创建一个非远端的事务脚本包含它。
  • 和服务层的区别:服务层不需要远端,也不需要远程外观和数据传输对象。
     

使用时机

  • 需要访问远程细粒度对象时,使用远程外观。
  • 最常用的地方是在表现和领域模型之间,二者处于不同的进程中。
  • 单一进程内部不需要远程外观,如客户领域模型和它的表现之间的通讯、Web服务器上的CGI脚本和领域模型之间的通讯。
  • 远程外观模式意味着同步,即一个远程过程的调用是分布式的。可以借助异步和基于消息的远程通讯改善应用程序的相应速度。

示例-使用Java语言的会话bean来作为远程外观(java

示例说明:通过一个远端接口,访问唱片数据,领域模型包括许多细粒度的对象:艺术家、唱片、曲目。另外还有其他一些包,为应用提供数据源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值