Observer Pola Desain
Oleh
chmood
Mendefinisikan ketergantungan satu-ke-banyak antara obyek
sehingga ketika satu objek perubahan negara, semua tanggungan akan diberitahu
dan diperbarui secara otomatis.
Merangkum inti (atau umum atau mesin) komponen dalam
abstraksi Subjek, dan variabel (atau opsional atau user interface) komponen
dalam hirarki Observer.
"View" bagian dari MVC.
Sebuah desain monolitik besar tidak skala serta grafik baru
atau persyaratan pemantauan pemungutan pajak-pajak.
Mendefinisikan suatu objek yang merupakan
"penjaga" dari model data dan / atau logika bisnis (Subjek).
Mendelegasikan semua "pandangan" fungsi untuk objek Observer
dipisahkan dan berbeda. Pengamat mendaftarkan diri dengan Subject karena mereka
diciptakan. Setiap kali perubahan Subjek, itu siaran untuk semua pengamat
terdaftar yang telah berubah, dan masing-masing Observer query Subjek untuk itu
bagian dari negara Subjek yang ia bertanggung jawab untuk monitoring.
Hal ini memungkinkan jumlah dan "jenis" dari
"pandangan" objek yang akan dikonfigurasi secara dinamis, bukannya
statis ditentukan pada saat kompilasi.
Protokol yang dijelaskan di atas menentukan
"menarik" model interaksi. Alih-alih Subject "mendorong"
apa yang telah berubah untuk semua pengamat, setiap Observer bertanggung jawab
untuk "menarik" yang "jendela kepentingan" tertentu dari
Subjek. "Push" model kompromi reuse, sedangkan "tarik"
model kurang efisien.
Isu-isu yang dibahas, tetapi diserahkan kepada kebijaksanaan
desainer, termasuk: menerapkan kompresi acara (hanya mengirim broadcast
perubahan tunggal setelah serangkaian perubahan berturut-turut telah terjadi),
memiliki Observer tunggal memantau beberapa Subyek, dan memastikan bahwa Subjek
memberitahu Pengamat ketika itu adalah tentang pergi.
Pola Observer menangkap bagian terbesar dari arsitektur MVC
yang telah menjadi bagian dari masyarakat Smalltalk selama bertahun-tahun.
Subjek merupakan inti (atau independen atau umum atau mesin)
abstraksi. Observer mewakili variabel (atau tergantung atau opsional atau user
interface) abstraksi. Subjek meminta objek Observer untuk melakukan hal mereka.
Setiap Observer dapat memanggil kembali ke Subjek yang diperlukan.
Observer mendefinisikan hubungan satu-ke-banyak sehingga
ketika satu objek perubahan negara, yang lain akan diberitahu dan diperbarui
secara otomatis. Beberapa lelang menunjukkan pola ini. Setiap peserta tender
memiliki dayung nomor yang digunakan untuk menunjukkan penawaran. Lelang
dimulai penawaran, dan "mengamati" ketika dayung dinaikkan untuk
menerima tawaran tersebut. Penerimaan tawaran perubahan harga penawaran yang
disiarkan ke semua peserta tender dalam bentuk tawaran baru.
Membedakan antara inti (atau independen) fungsi dan opsional
(atau tergantung) fungsi.
Model fungsi independen dengan "subjek" abstraksi.
Model fungsi tergantung dengan "pengamat" hirarki.
Subjek digabungkan hanya untuk kelas dasar Observer.
Klien mengkonfigurasi jumlah dan jenis Pengamat.
Pengamat mendaftarkan diri dengan Subjek.
Siaran Subjek acara untuk semua pengamat terdaftar.
Subjek mungkin "mendorong" informasi di Pengamat,
atau, yang pengamat dapat "menarik" informasi yang mereka butuhkan
dari Subjek.
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. Perintah biasanya menentukan koneksi pengirim-penerima
dengan subclass. Mediator memiliki pengirim dan penerima referensi satu sama
lain secara tidak langsung. Pengamat mendefinisikan antarmuka yang sangat
dipisahkan yang memungkinkan untuk beberapa penerima yang akan dikonfigurasi
pada saat run-time.
Mediator dan Observer bersaing pola. Perbedaan antara mereka
adalah Observer yang mendistribusikan komunikasi dengan memperkenalkan
"pengamat" dan "subjek" objek, sedangkan objek Mediator
merangkum komunikasi antara objek lainnya. Kami telah menemukan lebih mudah
untuk membuat pengamat dapat digunakan kembali dan Subyek daripada membuat
mediator dapat digunakan kembali.
Di sisi lain, Mediator dapat memanfaatkan Observer untuk
secara dinamis mendaftar rekan-rekan dan berkomunikasi dengan mereka.
Category
Komentar