Rantai Tanggung Jawab
Oleh
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,.
Category
Komentar