AbstractBorder
のサブクラス化は、カスタムスイングボーダーを開発するときにBorder
インターフェイスを実装するよりも時間がかかりますか?およびその逆?AbstractBorderをサブクラス化する時期と、Borderインタフェースを実装する時期はいつですか?
私が見たサンプルコードからはかなり恣意的なようです。
AbstractBorder
のサブクラス化は、カスタムスイングボーダーを開発するときにBorder
インターフェイスを実装するよりも時間がかかりますか?およびその逆?AbstractBorderをサブクラス化する時期と、Borderインタフェースを実装する時期はいつですか?
私が見たサンプルコードからはかなり恣意的なようです。
クリーンなOOPの場合は、Borderインターフェイスを実装する必要があります。しかし、もしあなたが新しいBorderクラスをあなたのBorderから継承する新しいクラスで拡張する予定がないなら、AbstractBorderを拡張するのがより便利です。
AbstractBorderは、作業を簡単にするためにSwingの一部です。したがって、それを使用しますが、それをクラス階層の基底にしないでください。
JavaがインターフェイスXYZとクラスAbstractXYZを持つ場合、クラスはかなりの作業を行い、実装する最小限の実装(例:ListとAbstractList)を残すことがあります。時には抽象クラスは何もしない実装(例えば、MouseInputListenerやMouseInputAdapter)を提供するだけです。後者の場合、ボーダーがより多くなります。それは実際にボーダーの実装を助けるわけではありませんが、(AFAICS)がボーダー自体よりもボーダーを「ホスティング」するコンポーネントのほうが使いやすいヘルパーメソッドを提供しています。 だから、私はおそらくがであり、どれが使用されているかということを言っているでしょう。とにかく、AbstractBorderを使用することをお勧めします。(別のクラスから派生する必要がない限り)理由はありません。
@PeterMmm、なぜそれを階層の一部として使用しないでください。標準スイングボーダーの多く(All?)は、AbstractBorderから派生しています。