Rumah  >  Artikel  >  Java  >  Apakah corak reka bentuk untuk kelas dalaman tanpa nama di Jawa?

Apakah corak reka bentuk untuk kelas dalaman tanpa nama di Jawa?

WBOY
WBOYasal
2024-05-02 16:42:011059semak imbas

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.

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

Corak Reka Bentuk Kelas Dalaman Java

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.

Corak reka bentuk utama

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);

2 Corak strategi

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn