シングルトンは有用で人気があると聞きましたが、実際はオープンソースプロジェクトにはほとんど見られません。なぜ人々はシングルトンの代わりに次のパターンを使用するのですか
代わりに、静的メソッドを使用する人が常にいます。
次1は一例であり link
public final class IoUtils {
private IoUtils() {
}
public static boolean copyStream(InputStream is, OutputStream os, CopyListener
......
}
}
Singletonパターンは、単に「インスタンスを1つだけ持っており、それへのアクセスのグローバルポイントを提供するクラスを定義する」と述べています。
私はUtilsクラスは他のすべてのクラスが共有するためシングルトンを使用するのに適していると思います。
しかし、なぜ人々は神経を使用していますか?
静的なクラス/メソッドで動作を実装することは、どのOOPの人にとっても望ましいとは思いません。それはテスト可能ではないためです。 静的クラスを使いやすくするには、クラスインタフェースを実装する基底クラスを用意し、静的メソッドの呼び出しを基になる非静的クラスの対応するメソッドにリダイレクトする方がよいでしょう。非静的クラスはシングルトンでもよいし、静的クラスには非静的クラス型の非公開メンバーを持たせることもできる –