複数のクラスで使用したい関数がありますが、それを行う適切な方法は何ですか?
クラスを作成して関数を静的に設定することを考えました...または、これらの関数を必要とするこのクラスを実装しますか?
どう思いますか ?
ありがとう
このメソッドがどのオブジェクトのインスタンス変数も使用しない場合は、実際に静的にすることができます (おそらくすべきです)。これにより、どこからでも使用できるようになります (パブリックでもある場合)。
このようなステートレスでグローバルに使用可能なメソッドの良い例は、java.lang.Math
クラスのメソッドです。
静的ユーティリティクラスのクラス インスタンスとは独立した共有機能を実装するのが一般的です。これは、Java がjava.utils.Collections
.
機能がインスタンスに依存する場合、実装を基本クラス (多くの場合、抽象基本クラス) に配置し、問題の機能を必要とする両方のクラスでそれを継承することにより、機能を共有できます。
最後に、パッケージ プライベート ユーティリティ クラスに共有機能を実装し、両方のクラスにパブリック メソッドを追加して、実装のためにそのパッケージ プライベート ユーティリティ クラスを呼び出すことができます。
それは関数の振る舞いに依存します。場合によっては、関数を別のクラスに入れて静的にするだけで十分です。ただし、その動作を変更する必要がある場合は、下位クラスでオーバーライドできるように非静的にすることを検討する必要があります。
これは通常、静的メソッドを含むユーティリティ クラスを使用して実現されます。
class MyCompanyUtils
{
public static encloseInQuotes(String s)
{
/* code to wrap s in quotes */
}
public static removeTrailingSlash(String s)
{
/* code to remove trailing slash from a string */
}
}