为什么代理被弃用了?

时间:2014-06-19 17:14:18

标签: scala proxy-classes

关于如何扩展Scala集合的

This question让我转向this answer,其范围从SetProxy而不是Set。但SetProxy已被弃用!文档说" (自版本2.11.0起)由于缺乏使用和编译器级支持而不推荐使用代理。"

为什么代理没有得到使用和编译器支持? Scala是否提供了更好的技术来完成同样的事情?它被发现有一些致命的缺陷吗?

1 个答案:

答案 0 :(得分:4)

代理被弃用,因为它很脆弱。代理应该将所有调用转发回其他实现。但是如果你在Set层次结构中添加一个新方法会怎么样 - 有人会记得将它添加到SetProxy并确保它指向它应该的位置吗?

实际上,没有好的方法来验证代理实际上是否正常运行。因此,我们决定最好不要拥有这些功能,而不是让它看起来像是有效的,但实际上已经没有了。编译器对代理的支持可能使得维护健壮的代理变得容易,但手动方法不够健壮。