0

我正在阅读这篇文章中的代理模式并理解了这个例子,但是这个评论让我很困惑。评论指出:

代理有两个大问题,尤其是在企业环境中。

1)你不能做自我调用。一个很好的例子是执行事务管理或安全性的代理。因此,您需要确保将呼叫转发到代理,而不是进行自我呼叫。这使得简单的类变得复杂。

2)身份有问题;一个很好的例子是一个休眠代理,它使得无法进行引用比较,即使您得到保证会话中没有同一实体的多个对象实例。

我的问题:

  1. 自调用是什么意思?
  2. 当两者都引用代理对象时,为什么我们不能进行引用比较?
4

1 回答 1

4
  1. “自调用”是指在同一个对象上调用方法,使用otherMethod()代替var.otherMethod(). 由于对同一对象的调用直接通过this而不是代理,因此不会发生代理将应用的任何特殊处理。

  2. 运行时环境可能会摆弄代理对象,并且您总是冒着意外尝试将代理本身与隐藏在其后面的业务对象进行比较的风险,例如对象在this某处传递引用而有人试图比较的情况它从运行时查找它(并获取代理)。

于 2013-08-16T05:33:06.610 回答