我正在浏览代理模式上的一篇文章。代理设计模式:缺点
Read the Comments After the Explanation
在这篇文章中有对代理模式提到的一些缺点,但我无法理解:
1)
缺点这里是“魔力”可能会发生,一个增量是不知道的('黑盒子'问题)。 请解释魔术。
2)
代理可以掩盖来自其客户端的易失性资源的生命周期和状态。客户端可能会调用代理服务器没有意识到资源当前不可用......在这种情况下,代理服务器必须阻塞,直到资源再次可用,或者它必须产生某种错误。用Java术语来说,它必须是一个未经检查的例外,因为代理必须遵守原始对象的接口。此外,客户端可能不知道它现在正在调用的资源与第二个之前调用的资源不同;如果资源上有任何状态,则客户可能会疑惑该状态似乎已被遗忘。
请解释。
3)
如果在本地进程中使用代理来表示远程资源,这可能掩盖了涉及远程通信的事实。正如我们所知,远程调用与本地调用完全不同,我们的程序不应该把它看作是相同的。如果代理以某种方式声明它是远程资源的代理而不是本地资源,那更好。然后,客户端将只能选择本地资源,或者在使用远程资源时修改其行为。
请您帮我理解以上三点与Proxy的缺点有关吗?
我相信这个解释也或多或少涵盖了第一种情况。你可以说透明地进行远程调用可以被认为是“魔术发生” –