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