我已经找到了很好的资源,这些资源告诉我 Java API 中的 MouseAdapter 没有使用适配器模式。问题是:MouseAdapter 是否实现了某种模式?
我知道它的作用:它为 MouseListener 接口创建了一个具体的类,因此您可以扩展该类以避免实现不必要的模式。
我想这可能是桥接模式的一部分。但我不确定,因为我不熟悉这种模式。
好问题!
我可以理解为什么一位响应者指出空对象,因为存在一些概念相似之处。我真的很喜欢这个答案。但在 Null 对象中,它实际上是为了消除不断检查 null 的需要,如下所示:
if (obj != null)
obj.DoSomething();
您可以通过创建一个存根对象来实现这一点,该存根对象使用无操作实现来重写 DoSomething()。对我来说,不同之处在于意图绝对不同。如果我看到一个空对象(无论是在名称中还是在 docos 中),我希望它应该通过无操作来实现所有操作。我绝不会期望它是一个从空对象继承的类。事实上,在我看来,它们应该被密封。
我不认为 Adapter 有那么糟糕,因为 Adapter 的目的是将不兼容或落后的接口改编(更改)为可以消费或使用的格式。这绝对是 MouseAdapter 的意图。 MouseListener 接口确实很落后,而 MouseAdapter 正在将该接口转换为更易于使用的接口。
它适应什么?我会说模板方法模式。特别是,它将接口实现方法转换为“钩子操作”。钩子操作是在子类中存在并要重写的方法,通常实现为无操作,并由基类调用。 (从概念上讲,我猜它是一个空方法而不是空对象)。它们作为扩展点存在,这就是它们在本例中的使用方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)