Definisi: Pola rantai tanggung jawab menciptakan rantai objek penerima untuk permintaan tersebut. Pola ini memberikan jenis permintaan, memisahkan pengirim dan penerima permintaan. Jenis pola desain ini termasuk dalam pola perilaku. Dalam mode ini, biasanya setiap penerima berisi referensi ke penerima lain. Jika suatu objek tidak dapat memproses permintaan, itu memberikan permintaan yang sama ke penerima berikutnya, dan seterusnya.
Fitur: 1. Kurangi derajat kopling. Ini memisahkan pengirim dan penerima permintaan.
2. Menyederhanakan objek. Ini membuat objek tidak perlu mengetahui struktur rantai.
3. Tingkatkan fleksibilitas untuk menetapkan tanggung jawab ke target. Dengan mengubah anggota dalam rantai atau memobilisasi pesanan mereka, itu memungkinkan penambahan dinamis atau penghapusan tanggung jawab.
4. Sangat nyaman untuk menambahkan kelas pemrosesan permintaan baru.
Aplikasi dalam pengembangan tingkat perusahaan dan kerangka kerja yang umum digunakan: Spring, Struts Interceptor, Servlet Filter
Contoh spesifik:
/** * Berikut adalah contoh cuti perusahaan: * 1. Seseorang mengambil cuti (acara) *2. Persetujuan Pemimpin Tim Proyek: Persetujuan dapat disetujui kurang dari tiga hari, dan meminta atasan lebih dari tiga hari*3. Persetujuan Pengawas Departemen: Persetujuan dapat disetujui kurang dari sepuluh hari, dan meminta atasan lebih dari sepuluh hari*4. Persetujuan General Manager: Persetujuan dapat disetujui kurang dari 30 hari, dan tidak menyetujui lebih dari 30 hari*/Demo kelas publik {public static void main (string [] args) {event event = event baru ("programmer", 32, "kembali ke kota kelahiran untuk mengunjungi kerabat"); Pemimpin A = Groupleader baru ("Zhang San"); Pemimpin b = manajer baru ("li si"); Pemimpin C = GeneralManager baru ("Wang Wu"); // Tentukan rantai mode tanggung jawab a.setNextleader (b); B.SetNextleader (c); A.Handler (acara); }}/*** Objek acara, peristiwa pemrosesan khusus dalam rantai tanggung jawab* Contoh ini adalah masalah meminta cuti*/class event {name string pribadi; hari int pribadi; alasan string pribadi; Acara Publik (nama string, int Days, String Reason) {super (); this.name = name; this.days = hari; this.reason = Reason; } public string getName () {return name; } public void setName (name string) {this.name = name; } public int getDays () {return days; } public void setdays (int days) {this.days = days; } public String getReason () {return rale; } public void setReason (string reason) {this.reason = alasan; }}/*** Objek rantai tanggung jawab abstrak, semua objek rantai tanggung jawab aktual berikut diwarisi dari objek ini*/abstrak pemimpin kelas {nama string pribadi; pemimpin yang dilindungi nextleader; // objek tanggung jawab berikutnya dalam rantai tanggung jawab, ini adalah dasar untuk menjaga rantai tanggung jawab pemimpin publik (nama string) {super (); this.name = name; } public void setNextleader (pemimpin nextleader) {this.nextleader = nextleader; } public string getName () {return name; } public void setName (name string) {this.name = name; } protected abstrak void handler (acara acara);}/*** Objek pertama dalam proses cuti, pemimpin grup*/kelas Groupleader memperluas pemimpin {public groupleader (nama string) {super (name); } void handler yang dilindungi (acara acara) {if (event.getdays () <3) { System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Alasan cuti: " + event.getReason () +" | "); System.out.println ("Approver:"+this.getName ()+"(pemimpin grup), lulus!"); System.out.println (); } else {System.out.println (this.getName ()+"(supervisor), tidak ada izin!"); this.nextleader.handler (acara); }}}/*** Objek kedua dalam proses cuti, Department Manager*/Class Manager memperluas pemimpin {Public Manager (nama string) {super (name); } void handler yang dilindungi (acara acara) {if (event.getdays () <10) { System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println (this.getName ()+"(General Manager), tidak ada izin!"); 30){ System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ offender: "+event.getName ()+" | "); System.out.println (" Jumlah hari cuti: "+event.getdays ()+" days "+" | "); System.out.println (" | Alasan cuti: "+event.getReason ()+" | "); System.out.println (" Approver: "+this.getName ()") (General Manager); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "+event.getName ()+" |. "); System.out.println ();}}}Model rantai tanggung jawab terutama digunakan untuk pengembangan seperti kontrol proses. Dibandingkan dengan model IF-ELSE, ia memiliki efisiensi yang lebih tinggi dalam modifikasi dan integrasi kode, yang lebih kondusif untuk pemeliharaan kode. Selain itu, ketika perlu untuk menambahkan objek dalam rantai tanggung jawab, kita perlu menerapkan kelas rantai tanggung jawab tertentu, kemudian membuat objek tanggung jawab, dan mempertahankan hubungan rantai tanggung jawab, tanpa overhead yang lebih besar. Selain itu, dalam desain aktual, berkali -kali, pemeliharaan rantai tanggung jawab dilakukan dalam file konfigurasi, yang akan menghemat lebih banyak waktu pengembangan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.