Rumah  >  Artikel  >  Java  >  Penerokaan mendalam tentang corak rantaian tanggungjawab dalam corak reka bentuk Java

Penerokaan mendalam tentang corak rantaian tanggungjawab dalam corak reka bentuk Java

WBOY
WBOYasal
2024-05-09 14:45:02852semak imbas

Corak Rantaian Tanggungjawab ialah corak reka bentuk yang membolehkan anda menghantar permintaan kepada satu set objek mengikut urutan sehingga permintaan itu dikendalikan atau semua objek cuba mengendalikannya. Ia mengandungi komponen berikut: Pengendali, Pengendali abstrak dan Pelanggan. Kelebihan termasuk: gandingan longgar, kebolehskalaan dan kebolehgunaan semula. Rantai penapis ialah contoh praktikal yang biasa.

Penerokaan mendalam tentang corak rantaian tanggungjawab dalam corak reka bentuk Java

Penerokaan mendalam tentang corak Rantaian Tanggungjawab dalam corak reka bentuk Java

Pengenalan

Corak Rantaian Tanggungjawab ialah corak reka bentuk yang membolehkan anda membuat satu set objek dalam urutan. Apabila objek tidak dapat mengendalikan permintaan, ia menghantar permintaan kepada objek seterusnya dalam rantai.

Struktur

Corak rantaian tanggungjawab mengandungi komponen berikut:

  • Pengendali: objek yang mengendalikan permintaan.
  • Pengendali Abstrak: Tentukan antara muka Pengendali.
  • Pelanggan: Objek yang memulakan permintaan.

Cara ia berfungsi

Corak rantaian tanggungjawab berfungsi seperti berikut:

  1. Pelanggan menghantar permintaan kepada pemproses pertama dalam rantai.
  2. Pemproses memutuskan sama ada untuk memproses permintaan. Jika ya, proses permintaan dan kembalikan hasilnya. Jika tidak, ia menghantar permintaan kepada pemproses seterusnya dalam rantaian.
  3. Proses ini berulang sehingga satu pemproses mengendalikan permintaan atau semua pemproses dalam rantaian telah cuba mengendalikan permintaan tersebut.

Kelebihan

Terdapat beberapa kelebihan menggunakan corak rantaian tanggungjawab:

  • Gandingan longgar: Pemproses adalah bebas antara satu sama lain, mudah untuk menambah atau mengalih keluar pemproses.
  • Kelanjutan: Langkah pemprosesan tambahan boleh ditambah dengan mudah mengikut keperluan.
  • Kebolehgunaan semula: Pemproses boleh digunakan semula untuk mengendalikan pelbagai jenis permintaan.

Kes praktikal

Rantai penapis

Rantai penapis ialah contoh biasa menggunakan corak rantaian tanggungjawab. Ia terdiri daripada satu set penapis yang memproses permintaan secara berurutan. Jika penapis tidak memenuhi permintaan, ia menghantar permintaan ke penapis seterusnya dalam rantai.

Contoh rantai penapis mudah adalah seperti berikut:

public class FilterChain {

    private List<Filter> filters;

    public FilterChain(List<Filter> filters) {
        this.filters = filters;
    }

    public void doFilter(Request request, Response response) {
        for (Filter filter : filters) {
            filter.doFilter(request, response);
        }
    }
}

public interface Filter {
    
    void doFilter(Request request, Response response);
}

public class AuthenticationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 验证请求
    }
}

public class AuthorizationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 授权请求
    }
}

public class LoggingFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 记录请求和响应
    }
}

public class Main {

    public static void main(String[] args) {
        FilterChain filterChain = new FilterChain(
            List.of(new AuthenticationFilter(),
                new AuthorizationFilter(),
                new LoggingFilter())
        );

        filterChain.doFilter(request, response);
    }
}

Atas ialah kandungan terperinci Penerokaan mendalam tentang corak rantaian tanggungjawab dalam corak reka bentuk Java. 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