開發自定義Swing邊框時,有沒有什麼時候比實現Border
接口更適合子類AbstractBorder
?反之亦然?何時子類AbstractBorder以及何時實現Border接口?
從我見過的示例代碼看來,這看起來很隨意。
開發自定義Swing邊框時,有沒有什麼時候比實現Border
接口更適合子類AbstractBorder
?反之亦然?何時子類AbstractBorder以及何時實現Border接口?
從我見過的示例代碼看來,這看起來很隨意。
對於乾淨的OOP,你應該實現Border接口。但是,如果您不打算使用從Border繼承的新類繼續擴展新的Border類,則擴展AbstractBorder將更爲方便。
AbstractBorder是Swing的一部分,使您的工作更輕鬆。因此,請使用它,但不要將其作爲類層次結構的基礎。
有時候,當Java有一個接口XYZ和一個類AbstractXYZ時,這個類會做很多工作,並且只留下最低限度的實現(例如List和AbstractList)。有時抽象類只提供了一個無所作爲的實現(例如MouseInputListener和MouseInputAdapter)。 AbstractBorder更多的是後一種情況;它並沒有真正幫助Border的實現,但它確實提供了一些輔助方法(AFAICS)對組件'託管'邊界比邊界本身更有用。 所以,我想說可能是有點任意使用哪一個。無論如何,我推薦使用AbstractBorder,沒有理由不去(除非你需要從另一個課程中派生出來)。
@PeterMmm,爲什麼你不應該把它作爲層次結構的一部分?標準Swing邊框的很多(全部?)派生自AbstractBorder。