Heim >Java >javaLernprogramm >Was sind die Entwurfsmuster für anonyme innere Klassen in Java?
Anonyme innere Klassen sind spezielle innere Klassen in Java, die keinen expliziten Namen haben und durch den neuen Ausdruck erstellt werden. Sie werden hauptsächlich zur Implementierung bestimmter Schnittstellen oder zur Erweiterung abstrakter Klassen verwendet und unmittelbar nach der Erstellung verwendet. Zu den gängigen Entwurfsmustern für anonyme innere Klassen gehören: Adaptermuster: Konvertiert eine Schnittstelle in eine andere Schnittstelle. Strategiemuster: Algorithmen definieren und ersetzen. Beobachtermuster: Beobachter registrieren und Ereignisse verarbeiten. Dies ist in praktischen Anwendungen sehr nützlich, z. B. beim Sortieren eines TreeSet nach Zeichenfolgenlänge, beim Erstellen anonymer Threads usw.
Anonyme innere Klasse ist eine spezielle Art von innerer Klasse in Java. Sie hat keinen expliziten Namen, sondern wird direkt mit einem neuen Ausdruck erstellt. Es wird hauptsächlich zum Implementieren einer bestimmten Schnittstelle oder zum Erweitern einer bestimmten abstrakten Klasse verwendet und normalerweise im Methodenkörper erstellt und sofort verwendet.
Die folgenden sind gängige Entwurfsmuster, die anonyme innere Klassen verwenden:
1. Adaptermuster
Das Adaptermuster verwendet anonyme innere Klassen, um eine Schnittstelle in eine andere Schnittstelle umzuwandeln. Der folgende Code erstellt beispielsweise eine anonyme innere Klasse und passt die Klasse Adaptee
an die Schnittstelle Target
an: Adaptee
类适配为 Target
接口:
Target target = new Target() { @Override public void request() { adaptee.specificRequest(); } };
2. 策略模式
策略模式使用匿名内部类来定义算法族,并使其可以互换使用。例如,以下代码创建一个匿名内部类,实现 Comparator
接口比较两个字符串的长度:
Comparator<String> comparator = new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } };
3. 观察者模式
观察者模式使用匿名内部类来注册观察者并处理主题发出的事件。例如,以下代码创建一个匿名内部类,实现 Observer
接口以观察 Subject
Subject subject = new Subject(); Observer observer = new Observer() { @Override public void update(Subject subject) { // 处理主题更新 } }; subject.addObserver(observer);
Strategiemuster verwendet anonym innere Klassen, um eine Familie von Algorithmen zu definieren und deren austauschbare Verwendung zu ermöglichen. Der folgende Code erstellt beispielsweise eine anonyme innere Klasse, die die Schnittstelle Comparator
implementiert, um die Längen zweier Zeichenfolgen zu vergleichen:
Set<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } });
3 Beobachtermuster
Das Beobachtermuster verwendet anonyme innere Klassen Registriert Beobachtungen und verarbeitet vom Thema ausgegebene Ereignisse. Der folgende Code erstellt beispielsweise eine anonyme innere Klasse, die die Observer
-Schnittstelle implementiert, um Subject
-Objekte zu beobachten:
new Thread() { @Override public void run() { System.out.println("Hello from thread!"); } }.start();Praktischer Fall🎜Beispiel: Erstellen Sie ein TreeSet mit Comparator 🎜🎜 🎜TreeSet erfordert, dass seine Elemente vergleichbar sind. Der folgende Code verwendet eine anonyme innere Klasse, um einen benutzerdefinierten Komparator zu definieren, der Zeichenfolgen nach ihrer Länge sortiert: 🎜rrreee🎜🎜 Beispiel: Erstellen Sie einen anonymen Thread 🎜🎜🎜Der folgende Code verwendet eine anonyme innere Klasse, um einen Thread zu erstellen und zu starten, in dem es gibt eine Nachricht aus: 🎜rrreee
Das obige ist der detaillierte Inhalt vonWas sind die Entwurfsmuster für anonyme innere Klassen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!