【发布时间】:2012-03-12 13:04:04
【问题描述】:
在开发自定义 Swing 边框时,有没有时候子类化 AbstractBorder 比实现 Border 接口更合适?反之亦然?
从我看到的示例代码来看,它似乎很随意。
【问题讨论】:
在开发自定义 Swing 边框时,有没有时候子类化 AbstractBorder 比实现 Border 接口更合适?反之亦然?
从我看到的示例代码来看,它似乎很随意。
【问题讨论】:
对于干净的 OOP,您应该实现 Border 接口。但是,如果你不打算用继承自 Border 的新类来扩展新的 Border 类,那么扩展 AbstractBorder 会更方便。
AbstractBorder 是 Swing 的一部分,让您的工作更轻松。所以使用它,但不要让它成为类层次结构的基础。
【讨论】:
有时,当 Java 有一个接口 XYZ 和一个类 AbstractXYZ 时,该类会做很多工作,而您只需要实现最少的部分(例如 List 和 AbstractList)。有时抽象类只提供一个无所事事的实现(例如 MouseInputListener 和 MouseInputAdapter)。 AbstractBorder 更多的是后一种情况;它并没有真正帮助 Border 的实现,但它确实提供了一些辅助方法(AFAICS)对于“托管”边框的组件比边框本身更有用。 所以,我会说它可能是有点武断使用哪个。无论如何,我建议使用 AbstractBorder,没有理由不这样做(除非您当然需要从另一个类派生。)
@PeterMmm,您为什么不将其用作层次结构的一部分?很多(全部?)标准 Swing 边框都来自 AbstractBorder。
【讨论】: