除了Remote Facade pattern
更多粗粒度的接口以及调用此接口的客户端远程而不是本地,两者之间是否存在任何其他差异模式?
谢谢
答案 0 :(得分:5)
您指的是像Java的RMI这样的Remote
界面吗?我认为这不是facade
,而是实际上是proxy
模式实现。
Remote将所有呼叫(通过代理模式从用户隐藏)转发到其他计算机。这使得用户无法在本地完成工作。
Facade
模式通常将复杂的界面简化为更简化的版本(比如使用不同的控制面板替换复杂的控制面板,只使用一些最常用的按钮)。如果你真的需要更复杂的版本,你仍然可以使用旧的更复杂的控件。
修改强>
在你指出你指的是Marin Fowler的Remote Facade
之后我将进一步解释:
福勒的Remote Facade
不仅仅是Remote
+ Facade
模式。在立面使用的简化背后还有一个额外的原因。
而不仅仅是简化复杂的方法或从外观中删除使用过的方法。 RemoteFacade
明确用于组合“未压缩”接口中的几种常用方法,以减少延迟和网络流量。
由于Remote
调用将通过网络(使用Java的RMI等),因此将方法调用转换为消息以通过网络会产生大量开销。消息需要一段时间才能通过网络并获得消息并解组响应等。也可能有安全层检查和拦截流量。所有这些都增加了调用远程方法的时间和精力。
RemoteFacade
将几种常用方法组合到一个网络消息中。所以在他的书中使用Fowler的例子,如果你有一个Address的接口,有setCity()setZipcode(),setStreet()的单独setter。那将是通过网络的3个远程呼叫。相反,RemoteFacade
将其转换为1方法setAddress(street,city,zip),这只需要传递1个网络消息,因此调用时间应该更短。