シングルトンクラスvs静的メソッドおよびフィールド?

fadedbee:

静的フィールドと静的メソッドを持つクラスを使用して同じ機能が提供されているように見えるのに、Android / Javaでシングルトンクラスが使用されるのはなぜですか?

例えば

public class StaticClass {
    private static int foo = 0;

    public static void setFoo(int f) {
        foo = f;
    }

    public static int getFoo() {
        return foo;
    }
}

public class SingletonClass implements Serializable {

    private static volatile SingletonClass sSoleInstance;
    private int foo;

    //private constructor.
    private SingletonClass(){

        //Prevent form the reflection api.
        if (sSoleInstance != null){
            throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
        }

        foo = 0;
    }

    public static SingletonClass getInstance() {
        if (sSoleInstance == null) { //if there is no instance available... create new one
            synchronized (SingletonClass.class) {
                if (sSoleInstance == null) sSoleInstance = new SingletonClass();
            }
        }

        return sSoleInstance;
    }

    //Make singleton from serialize and deserialize operation.
    protected SingletonClass readResolve() {
        return getInstance();
    }

    public void setFoo(int foo) {
        this.foo = foo;
    }

    public int getFoo() {
        return foo;
    }
}
マタンシャハール:

これは主の制限によるものであるstatic typessingletonsどれが:

  • 静的型はインターフェイスを実装できず、基本クラスから派生できません。
  • 上記から、静的型が高い結合を引き起こすことがわかります-テストや異なる環境で他のクラスを使用することはできません。
  • 静的クラスは、依存性注入を使用して注入することはできません。
  • シングルトンは、モックやシムがはるかに簡単です。
  • シングルトンはトランジェントに簡単に変換できます。

私の頭の上からこれらのいくつかの理由。これはおそらくすべてではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GWTクライアントの静的クラス、メソッド、およびフィールド

分類Dev

静的メソッドを介してシングルトンのフィールドにアクセスする

分類Dev

パターン:シングルトンと静的変数およびメソッドのアプローチ

分類Dev

シングルトンおよび静的ユーティリティクラス

分類Dev

テスト用の静的メソッド/静的フィールドのリファクタリング

分類Dev

シングルトンでのクラスフィールドとメソッドのJava順序

分類Dev

クラスパフォーマンスの静的および非静的メソッドの実装

分類Dev

検証、メソッド実行、およびJITコンパイル中のクラスローディングの理由とトレース

分類Dev

Dartの名前付きコンストラクター、静的メソッド、およびファクトリコンストラクター

分類Dev

「アンロードされた」Javaクラスファイル内のクラス、フィールド、およびメソッドレベルのアノテーションを検査する方法はありますか?

分類Dev

シングルトン静的ネストクラスのリフレクション取得フィールド

分類Dev

パフォーマンスのための通常クラス、シングルトンクラス、または静的メソッド

分類Dev

Java、静的メソッドバインディング、およびジェネリックスはすべて、いくつかのメソッドオーバーロードによってロールアップされます

分類Dev

リフレクション:静的フィールド内でメソッドを呼び出す

分類Dev

基本コンストラクターの呼び出し中およびヘルパーメソッドでのクラスプロパティの使用

分類Dev

Observable および静的メソッド (of、from、...) のコンストラクターは使用できません

分類Dev

elsaticsearchのソースフィルタリング、保存されたフィールド、およびドキュメント値の違いは何ですか?

分類Dev

Angular 2 onInit vsinメソッドでのシングルトンクラスメソッド呼び出し

分類Dev

エンティティのすべてのリポジトリメソッドの非表示および静的フィルター

分類Dev

シングルトンメソッドとクラスメソッド

分類Dev

シングルトンメソッドとクラスメソッドJava

分類Dev

シングルトン クラスの静的フィールドに関するアドバイス

分類Dev

シングルトンクラスまたは静的フィールドのみのクラス?

分類Dev

デフォルトおよび静的インターフェースメソッドがAndroid Studio 3.0でサポートされていない理由

分類Dev

デフォルトおよび静的メソッドはJava8インターフェースでどのように機能しますか?

分類Dev

WebApiとWinForms、および「非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です」というエラーのあるシリアルポート

分類Dev

Googleスプレッドシートでの最速および平均時間のフィルタリング

分類Dev

静的メソッドまたはパフォーマンスに優れたシングルトン(Android)?

分類Dev

メソッドのトラブルシューティング

Related 関連記事

  1. 1

    GWTクライアントの静的クラス、メソッド、およびフィールド

  2. 2

    静的メソッドを介してシングルトンのフィールドにアクセスする

  3. 3

    パターン:シングルトンと静的変数およびメソッドのアプローチ

  4. 4

    シングルトンおよび静的ユーティリティクラス

  5. 5

    テスト用の静的メソッド/静的フィールドのリファクタリング

  6. 6

    シングルトンでのクラスフィールドとメソッドのJava順序

  7. 7

    クラスパフォーマンスの静的および非静的メソッドの実装

  8. 8

    検証、メソッド実行、およびJITコンパイル中のクラスローディングの理由とトレース

  9. 9

    Dartの名前付きコンストラクター、静的メソッド、およびファクトリコンストラクター

  10. 10

    「アンロードされた」Javaクラスファイル内のクラス、フィールド、およびメソッドレベルのアノテーションを検査する方法はありますか?

  11. 11

    シングルトン静的ネストクラスのリフレクション取得フィールド

  12. 12

    パフォーマンスのための通常クラス、シングルトンクラス、または静的メソッド

  13. 13

    Java、静的メソッドバインディング、およびジェネリックスはすべて、いくつかのメソッドオーバーロードによってロールアップされます

  14. 14

    リフレクション:静的フィールド内でメソッドを呼び出す

  15. 15

    基本コンストラクターの呼び出し中およびヘルパーメソッドでのクラスプロパティの使用

  16. 16

    Observable および静的メソッド (of、from、...) のコンストラクターは使用できません

  17. 17

    elsaticsearchのソースフィルタリング、保存されたフィールド、およびドキュメント値の違いは何ですか?

  18. 18

    Angular 2 onInit vsinメソッドでのシングルトンクラスメソッド呼び出し

  19. 19

    エンティティのすべてのリポジトリメソッドの非表示および静的フィルター

  20. 20

    シングルトンメソッドとクラスメソッド

  21. 21

    シングルトンメソッドとクラスメソッドJava

  22. 22

    シングルトン クラスの静的フィールドに関するアドバイス

  23. 23

    シングルトンクラスまたは静的フィールドのみのクラス?

  24. 24

    デフォルトおよび静的インターフェースメソッドがAndroid Studio 3.0でサポートされていない理由

  25. 25

    デフォルトおよび静的メソッドはJava8インターフェースでどのように機能しますか?

  26. 26

    WebApiとWinForms、および「非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です」というエラーのあるシリアルポート

  27. 27

    Googleスプレッドシートでの最速および平均時間のフィルタリング

  28. 28

    静的メソッドまたはパフォーマンスに優れたシングルトン(Android)?

  29. 29

    メソッドのトラブルシューティング

ホットタグ

アーカイブ