gpt4 book ai didi

design-patterns - smalltalk中的代理模式实现

转载 作者:行者123 更新时间:2023-12-02 05:06:45 25 4
gpt4 key购买 nike

我正在阅读 smalltalk 中的代理模式实现,它是使用 doesNotUnderstand 实现的。我没有得到它什么时候会像场景中那样调用这个方法。谁能给我一个例子/场景。

最佳答案

doesNotUnderstand: 如果方法查找失败,将调用 DNU 而不是原始消息。下面的例子,

nil aSelectorThatDoesNotExist

触发 Object 上的默认 DNU,这将引发 MessageNotUnderstood 异常。

您可以使用 doesNotUnderstand: 协议(protocol)轻松地将消息发送委托(delegate)给另一个对象。例如,如果我在我的 Proxy 上添加以下方法,

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

它将所有未在 Proxy 本身上实现的消息转发到另一个 target 对象。这里重要的是 Proxy 对象应该实现尽可能少的方法,否则无法转发。为此PharoSqueak有一个 ProtoObject 只实现了一组基本的方法。通常,代理继承自 ProtoObject

关于design-patterns - smalltalk中的代理模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com