Observer Pola Desain

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.



Komentar