Kelas dalaman tanpa nama ialah kelas dalaman khas dalam Java yang tidak mempunyai nama eksplisit dan dicipta melalui ungkapan baharu Ia digunakan terutamanya untuk melaksanakan antara muka tertentu atau melanjutkan kelas abstrak dan digunakan serta-merta selepas penciptaan. Corak reka bentuk kelas dalaman tanpa nama biasa termasuk: Corak penyesuai: menukar satu antara muka kepada antara muka yang lain. Corak Strategi: Mentakrifkan dan Menggantikan Algoritma. Corak pemerhati: Daftar pemerhati dan kendalikan peristiwa. Ia sangat berguna dalam aplikasi praktikal, seperti menyusun TreeSet mengikut panjang rentetan, mencipta benang tanpa nama, dsb.
Kelas dalaman tanpa nama ialah jenis kelas dalam yang istimewa di Jawa Ia tidak mempunyai nama yang jelas, tetapi dicipta secara langsung menggunakan ungkapan baharu. Ia digunakan terutamanya untuk melaksanakan antara muka tertentu atau melanjutkan kelas abstrak tertentu, dan biasanya dibuat dalam badan kaedah dan digunakan serta-merta.
Berikut ialah corak reka bentuk biasa menggunakan kelas dalaman tanpa nama:
1. Corak penyesuai
Corak penyesuai menggunakan kelas dalaman tanpa nama untuk menukar satu antara muka kepada antara muka yang lain. Contohnya, kod berikut mencipta kelas dalaman tanpa nama dan menyesuaikan kelas Adaptee
kepada antara muka Target
: 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);
Corak strategi menggunakan tanpa nama kelas dalaman untuk menentukan keluarga algoritma dan membolehkannya digunakan secara bergantian. Sebagai contoh, kod berikut mencipta kelas dalam tanpa nama yang melaksanakan antara muka Comparator
untuk membandingkan panjang dua rentetan:
Set<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } });
3 Corak pemerhati
Corak pemerhati menggunakan kelas dalam tanpa nama untuk. mendaftar pemerhatian dan mengendalikan peristiwa yang dipancarkan oleh topik. Sebagai contoh, kod berikut mencipta kelas dalaman tanpa nama yang melaksanakan antara muka Observer
untuk memerhati objek Subject
:
new Thread() { @Override public void run() { System.out.println("Hello from thread!"); } }.start();Kes praktikal🎜Contoh: Buat TreeSet dengan Comparator 🎜🎜 🎜TreeSet memerlukan elemennya untuk setanding. Kod berikut menggunakan kelas dalaman tanpa nama untuk mentakrifkan pembanding tersuai yang mengisih rentetan berdasarkan panjangnya: 🎜rrreee🎜🎜 Contoh: Buat urutan tanpa nama 🎜🎜🎜Kod berikut menggunakan kelas dalam tanpa nama untuk mencipta dan memulakan urutan di mana ia mencetak Mesej: 🎜rrreee
Atas ialah kandungan terperinci Apakah corak reka bentuk untuk kelas dalaman tanpa nama di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!