ホームページ  >  記事  >  Java  >  Java の匿名内部クラスの設計パターンは何ですか?

Java の匿名内部クラスの設計パターンは何ですか?

WBOY
WBOYオリジナル
2024-05-02 16:42:011059ブラウズ

匿名内部クラスは、明示的な名前を持たない Java の特別な内部クラスであり、new 式を通じて作成され、主に特定のインターフェイスの実装または抽象クラスの拡張に使用され、作成直後に使用されます。一般的な匿名内部クラスの設計パターンには次のものがあります。 アダプター パターン: 1 つのインターフェイスを別のインターフェイスに変換します。戦略パターン: アルゴリズムの定義と置換。オブザーバー パターン: オブザーバーを登録し、イベントを処理します。これは、文字列の長さによる TreeSet の並べ替え、匿名スレッドの作成など、実際のアプリケーションで非常に役立ちます。

Java 匿名内部类的设计模式有哪些?

Java 匿名内部クラスの設計パターン

匿名内部クラスは、明示的ではない Java の特別なタイプの内部クラスです。名前を付けるのではなく、new 式を使用して直接作成します。これは主に、特定のインターフェイスを実装したり、特定の抽象クラスを拡張したりするために使用され、通常はメソッド本体内で作成され、すぐに使用されます。

主な設計パターン

匿名内部クラスを使用するための一般的な設計パターンは次のとおりです:

1. アダプター パターン

アダプターパターン 匿名内部クラスを使用して、あるインターフェイスを別のインターフェイスに変換します。たとえば、次のコードは、Adptee クラスを Target インターフェイスに適合させる匿名内部クラスを作成します:

Target target = new Target() {
    @Override
    public void request() {
        adaptee.specificRequest();
    }
};

2。

Strategy パターンは、匿名の内部クラスを使用してアルゴリズムのファミリーを定義し、それらを交換可能にします。たとえば、次のコードは、2 つの文字列の長さを比較する

Comparator インターフェイスを実装する匿名内部クラスを作成します:

Comparator<String> comparator = new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
};

3。 Observer パターンは、匿名の内部クラスを使用してオブザーバーを登録し、トピックによって発行されたイベントを処理します。たとえば、次のコードは、Subject

オブジェクトを監視するための

Observer インターフェイスを実装する匿名内部クラスを作成します。 ##例: コンパレータを使用して TreeSet を作成するTreeSet では要素を比較する必要があります。次のコードでは、匿名の内部クラスを使用して、文字列を長さに基づいて並べ替えるカスタム コンパレータを定義します。

Subject subject = new Subject();
Observer observer = new Observer() {
    @Override
    public void update(Subject subject) {
        // 处理主题更新
    }
};
subject.addObserver(observer);

例: 匿名スレッドの作成

次のコードでは、 anonymous 内部クラスは、メッセージを出力するスレッドを作成して開始します:

Set<String> treeSet = new TreeSet<>(new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
});

以上がJava の匿名内部クラスの設計パターンは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。