gpt4 book ai didi

design-patterns - 鼠标适配器 : which pattern does it use?

转载 作者:行者123 更新时间:2023-12-04 18:13:28 28 4
gpt4 key购买 nike

我已经能够找到很好的资源,这些资源告诉我 Java API 中的 MouseAdapter 没有使用适配器模式。问题是:MouseAdapter 是否实现了某种模式?

我知道它的作用:它为 MouseListener 接口(interface)创建了一个具体的类,因此您可以扩展该类以避免实现不必要的模式。

我在想它可能是桥模式的一部分。不过我不确定,因为我不熟悉这种模式。

最佳答案

好问题!

我可以理解为什么一位响应者说空对象,因为存在一些概念上的相似之处。我真的很喜欢这个答案。但在 Null Object 中,它实际上是为了消除不断检查 null 的需要,如下所示:

if (obj != null)
obj.DoSomething();

您可以通过创建一个使用无操作实现覆盖 DoSomething() 的 stub 对象来做到这一点。对我来说不同的是,意图肯定是不同的。如果我看到一个 Null 对象(在名称中或在 docos 中),我希望它应该使用无操作实现所有操作。我永远不会期望它是一个从 Null 对象继承的类。事实上,在我看来,它们应该被密封。

我不认为 Adapter 有那么糟糕,因为 Adapter 的目的是将不兼容或确认的接口(interface)适应(更改)为可以使用或使用的格式。这绝对是 MouseAdapter 的意图。 MouseListener 接口(interface)确实是公认的,并且 MouseAdapter 正在将该接口(interface)转换为更容易使用的东西。

它把它改编成什么?我会说模板方法模式。特别是,它将接口(interface)实现方法转换为“钩子(Hook)操作”。钩子(Hook)操作是存在于子类中被覆盖的方法,通常实现为无操作,并由基类调用。 (从概念上讲,我猜它是 Null 方法而不是 Null 对象)。它们作为扩展点存在,这就是它们在这种情况下的使用方式。

关于design-patterns - 鼠标适配器 : which pattern does it use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302636/

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