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.
質問する
525 次
2 に答える
5
doesNotUnderstand:
または、メソッド ルックアップが失敗した場合、元のメッセージの代わりに DNU が呼び出されます。次の例では、
nil aSelectorThatDoesNotExist
オブジェクトでデフォルトの DNU をトリガーし、MessageNotUnderstood
例外が発生します。
doesNotUnderstand:
プロトコルを使用して、メッセージ送信を別のオブジェクトに簡単に委任できます。たとえば、次のメソッドを my に追加するとProxy
、
doesNotUnderstand: aMessage
^ target perform: aMessage selector withArguments: aMessage arguments
Proxy
それ自体に実装されていないすべてのメッセージを別のtarget
オブジェクトに転送します。ここで重要なのは、Proxy
オブジェクトが実装するメソッドはできるだけ少なくすることです。そうしないと、メソッドを転送できません。このため、 PharoやSqueakにはProtoObject
、基本的なメソッド セットのみを実装する があります。通常、プロキシは から継承しProtoObject
ます。
于 2013-04-24T10:38:22.277 に答える