我已经找到了很多资源,可以告诉我Java API中的MouseAdapter没有利用Adapter模式。问题是:MouseAdapter是否实现一种模式?

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

我以为这可能是Bridge模式的一部分。我不确定,因为我不熟悉这种模式。

最佳答案

好问题!

我可以看到为什么一个响应者说“空对象”,因为在概念上有一些相似之处。我真的很喜欢这个答案。但是在Null Object中,它实际上是关于消除对持续检查null的需求,如下所示:

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

然后,您可以通过创建一个 stub 对象来实现此目的,该 stub 对象将使用无操作实现覆盖DoSomething()。对我而言,不同之处在于意图完全不同。如果我看到一个Null对象(无论是名称还是docos),我都希望它可以通过no-op来实现所有操作。我永远都不会期望它是一个从Null Object继承的类。实际上,我认为应该将它们密封。

我不认为Adapter这么糟糕,因为Adapter的目的是将不兼容或落后的接口(interface)改编(更改)为可以使用或使用的格式。那绝对是MouseAdapter的意图。 MouseListener接口(interface)确实具有约束力,MouseAdapter将该接口(interface)转换为更容易使用的接口(interface)。

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

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

10-11 03:55