次のような抽象クラスがあるとします。
public abstract class Foo {
public Foo (boolean bar) {...}
}
を拡張するクラスもありますFoo
。
public class FooThread extends Foo {}
名前FooThread
が示すように、スレッドになるため、Runnable を実装する必要があります。
implements Runnable
問題は、拡張性と可読性 (またはその他の理由) の点で最適な場所は何か?
いくつかの代替案は次のとおりです。
1)implements
抽象クラスに挿入します。
public abstract class Foo implements Runnable {}
- 抽象クラスを見るとわかりやすい
- 拡張性が低い
2)implements
拡張クラスに挿入します。
public class FooThread extends Foo implements Runnable {}
- 抽象クラスのスレッド機能に関するヒントはありません
- より拡張可能
3) 拡張クラスに挿入し、抽象メソッドとして抽象implements
クラスに追加します。run()
public class FooThread extends Foo implements Runnable {}
public abstract class Foo {
public Foo (boolean bar) {...}
public abstract void run();
}
- 抽象クラスを見たときの可読性
- 拡張可能(まあ、少なくとももう少し柔軟)
- 抽象クラスの抽象メソッドは一種の冗長です
- "醜い"
implements Runnable
またはimplements Xyz
を一般的に配置するためのベスト プラクティスはありますか? 最も早い段階で、または実際にインターフェイスを実装するクラスで? それとも、それは私たちが望むものに本当に依存していますか? 何がいいですか?
ご意見ありがとうございます。