Rantai Tanggung Jawab

chmood

   Hindari kopling pengirim permintaan ke penerima dengan memberikan lebih dari satu objek kesempatan untuk menangani permintaan. Rantai benda menerima dan lulus permintaan sepanjang rantai sampai obyek menangani itu.
Peluncuran-dan-meninggalkan permintaan dengan pipa pengolahan tunggal yang berisi banyak kemungkinan penangan.
Sebuah linked list berorientasi objek dengan traversal rekursif.


Ada sejumlah berpotensi variabel "handler" atau "elemen pemrosesan" atau "node" objek, dan aliran permintaan yang harus ditangani. Perlu efisien memproses permintaan tanpa hubungan sulit-kabel handler dan didahulukan, atau permintaan-to-handler pemetaan.

Merangkum elemen pengolahan di dalam "pipa" abstraksi; dan memiliki klien "peluncuran dan meninggalkan" permintaan mereka di pintu masuk ke pipa.


   Rantai pola penerimaan yang objek bersama-sama, dan kemudian melewati pesan permintaan dari objek ke objek hingga mencapai obyek mampu menangani pesan. Jumlah dan jenis benda handler tidak diketahui apriori, mereka dapat dikonfigurasi secara dinamis. Mekanisme chaining menggunakan komposisi rekursif untuk memungkinkan jumlah yang tidak terbatas penangan untuk dihubungkan.

Rantai Tanggung Jawab menyederhanakan interkoneksi objek. Alih-alih pengirim dan penerima memelihara referensi untuk semua penerima calon, masing-masing pengirim membuat referensi tunggal untuk kepala rantai, dan masing-masing penerima membuat referensi tunggal untuk penggantinya di rantai.

Pastikan terdapat "jaring pengaman" untuk "menangkap" setiap permintaan yang masuk tertangani.

Jangan gunakan Rantai Tanggung Jawab ketika setiap permintaan hanya ditangani oleh satu handler, atau, ketika objek klien tahu layanan yang objek harus menangani permintaan.

   Kelas yang berasal tahu bagaimana untuk memenuhi permintaan klien. Jika objek "saat ini" tidak tersedia atau mencukupi, maka delegasi untuk kelas dasar, yang delegasi ke objek "berikutnya", dan lingkaran kehidupan terus berlanjut.


Beberapa penangan bisa berkontribusi pada penanganan setiap permintaan. Permintaan dapat diturunkan seluruh panjang rantai, dengan link terakhir berhati-hati untuk tidak mendelegasikan ke "nol berikutnya",

Contoh
   Rantai pola Tanggung Jawab menghindari kopling pengirim permintaan ke penerima dengan memberikan lebih dari satu objek kesempatan untuk menangani permintaan. ATM menggunakan Rantai Tanggung Jawab uang memberikan mekanisme”.


   Kelas dasar mempertahankan "berikutnya" pointer.
Setiap kelas turunan mengimplementasikan kontribusinya untuk menangani permintaan.
Jika permintaan perlu "diteruskan", maka kelas turunan "panggilan kembali" ke kelas dasar, yang delegasi ke "depan" pointer.
Klien (atau beberapa pihak ketiga) menciptakan dan link rantai (yang mungkin termasuk link dari node terakhir ke simpul akar).
Klien "peluncuran dan daun" setiap permintaan dengan akar rantai.
Delegasi rekursif menghasilkan ilusi sihir,.

Aturan praktis
   Rantai Tanggung Jawab, Command, Mediator, dan Observer, membahas bagaimana Anda dapat memisahkan pengirim dan penerima, tetapi dengan berbeda trade-off. Rantai Tanggung Jawab melewati permintaan pengirim sepanjang rantai penerima potensial.
Rantai Tanggung Jawab dapat menggunakan Command untuk mewakili permintaan sebagai objek.
Rantai Tanggung Jawab sering diterapkan dalam hubungannya dengan Komposit. Ada, orang tua komponen dapat bertindak sebagai penggantinya,.






Komentar