簡體   English   中英

Pharo Smalltalk-消息轉發,是否可以攔截消息並將其重定向到另一個對象(實例)?

[英]Pharo Smalltalk - Message forwarding, is it possible to intercept a message and redirect it to another Object (instance)?

Pharo Smalltalk-消息轉發,是否可以攔截消息並將其重定向到另一個對象(實例)?

在Objective-C中,有一個forwardInvocation:在拋出異常之前立即調用它,因此您可以對收到的消息做一些事情,而一無所知。

在Smalltalk中,是否可以將消息重定向到代理?

Smalltalk具有doesNotUnderstand: aMessage ,代替其他未定義的方法發送給接收者。 您可以覆蓋它並做任何您想做的事(例如,將消息轉發到另一個對象,將其記錄到磁盤上,...),例如:

doesNotUnderstand: aMessage 
    aMessage sendTo: self delegate.

如果要“攔截”實際在對象上定義的消息,則有兩個選擇:

  1. 子類化和使用自己的對象
  2. 使用方法包裝器來替換允許各種操作的原始方法定義(將消息重定向到新的接收者,執行消息之前和之后的鈎子,阻止執行包裝的方法等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM