Когда создавать подкласс AbstractBorder и когда реализовывать интерфейс Border? - PullRequest
1 голос
/ 12 марта 2012

Есть ли время, когда подкласс AbstractBorder более уместен, чем реализация интерфейса Border при разработке пользовательской границы Swing? И наоборот?

Из примера кода, который я видел, он выглядит совершенно произвольно.

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Для чистого ООП вы должны реализовать интерфейс Border. Но, если вы больше не планируете расширять свой новый класс Border новыми классами, которые наследуются от вашего Border, более удобно расширять AbstractBorder.

AbstractBorder делает Swing частью вашей работы. Так что используйте его, но не делайте его основой иерархии классов.

0 голосов
/ 11 июня 2012

Иногда, когда в Java есть интерфейс XYZ и класс AbstractXYZ, класс выполняет довольно много работы и оставляет вам лишь минимум для реализации (например, List и AbstractList). Иногда абстрактный класс просто обеспечивает реализацию бездействия (например, MouseInputListener и MouseInputAdapter). AbstractBorder - это скорее последний случай; это не очень помогает реализации Border, но предоставляет некоторые вспомогательные методы, которые (AFAICS) более полезны для компонента, «размещающего» границу, чем сама граница. Итак, я бы сказал, что, вероятно, является немного произвольным, какой из них используется. В любом случае, я бы порекомендовал использовать AbstractBorder, нет никаких оснований этого не делать (если, конечно, вам не нужен производный от другого класса).

@ PeterMmm, почему бы вам не использовать его как часть иерархии? Многие (все?) Стандартные границы Swing происходят от AbstractBorder.

...