次のような抽象クラスがあるとします。
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を一般的に配置するためのベスト プラクティスはありますか? 最も早い段階で、または実際にインターフェイスを実装するクラスで? それとも、それは私たちが望むものに本当に依存していますか? 何がいいですか?
ご意見ありがとうございます。