2

I was reading Proxy pattern implementation in smalltalk where it is implemented using doesNotUnderstand. I did not get it when will this method be invoked as in the scenario. Can some one give me a example/scenario.

4

2 に答える 2

5

doesNotUnderstand:または、メソッド ルックアップが失敗した場合、元のメッセージの代わりに DNU が呼び出されます。次の例では、

nil aSelectorThatDoesNotExist

オブジェクトでデフォルトの DNU をトリガーし、MessageNotUnderstood例外が発生します。

doesNotUnderstand:プロトコルを使用して、メッセージ送信を別のオブジェクトに簡単に委任できます。たとえば、次のメソッドを my に追加するとProxy

doesNotUnderstand: aMessage
    ^ target perform: aMessage selector withArguments: aMessage arguments

Proxyそれ自体に実装されていないすべてのメッセージを別のtargetオブジェクトに転送します。ここで重要なのは、Proxyオブジェクトが実装するメソッドはできるだけ少なくすることです。そうしないと、メソッドを転送できません。このため、 PharoSqueakにはProtoObject、基本的なメソッド セットのみを実装する があります。通常、プロキシは から継承しProtoObjectます。

于 2013-04-24T10:38:22.277 に答える