2013-08-16 36 views
0

我正在閱讀有關代理模式的this article並瞭解該示例,但this comment令我困惑。評論指出:無法理解代理人利弊

代理有兩大問題,特別是在企業環境中。

1)你不能自己打電話。一個很好的例子是執行事務管理或安全的代理。因此,您需要確保不要自己打電話,而是將呼叫轉發給代理。這使得簡單的類複雜。

2)存在身份問題;一個好的examlpe是一個hibernate代理,它使得不可能做一個參考比較,即使你得到保證在會話中沒有同一個實體的多個對象實例。

我的問題:

  1. 什麼是自己的呼叫意思?
  2. 爲什麼我們無法在兩個引用代理對象時進行引用比較?
+2

誰是彼得,哪裏的*鏈接在下面*? –

+0

我覺得彼得留下的鏈接;-) –

+0

我非常抱歉的傢伙,只是錯過了。但現在增加了 –

回答

4
  1. 「自我呼叫」是指調用方法相同的對象上,利用otherMethod()代替var.otherMethod()。由於對同一對象的調用直接通過this而不是代理,代理將應用的任何特殊待遇不會發生。

  2. 運行時環境可以反覆折騰的代理對象,該對象通過一個this引用了你總會遇到意外試圖比較代理本身與業務對象躲在它的後面,如情況下的風險某處和某人試圖比較它從運行時看起來備份(並獲取代理)。

+0

請您用一個例子來闡述第二點?假設我有一個代表對象的abc,它是指實際對象的xyz。現在可以請你用這個例子來解釋你的第二點。 –