Pola Desain Pengamat seperti podcast

Jika Anda mendengarkan podcast, Anda sudah terbiasa dengan pola Observer. Bahkan, Anda adalah seorang "pengamat".

Inilah definisi untuk pola Pengamat:

Pola Observer mendefinisikan ketergantungan satu-ke-banyak antara objek sehingga ketika satu objek berubah status, semua tanggungannya diberitahu dan diperbarui secara otomatis.

Mari kita lihat definisi yang terkait dengan podcast.

Saya menemukan podcast menarik bernama teh pengembang.

Setelah mengklik tombol SUBSCRIBE, saya sekarang ada di daftar pelanggan mereka.

Saat teh pengembang merilis episode baru, aplikasi akan memberi tahu saya dan pelanggan lainnya. Ini mengunduh episode baru untuk kami.

Itulah definisi pola Pengamat!

Pola Observer mendefinisikan ketergantungan satu-ke-banyak antara objek sehingga ketika satu objek berubah status, semua tanggungannya diberitahu dan diperbarui secara otomatis.

Ada hubungan satu-ke-banyak antara podcast teh pengembang dan pelanggan.

Ketika teh pengembang berubah, seperti merilis episode baru, semua pelanggan teh pengembang diberitahu dan diperbarui.

Mari kita implementasikan di Ruby.

Mulai dengan versi sederhana.

Kelas Podcast menyimpan daftar episode dan memiliki metode untuk menambahkan_episode ke daftar.

Kemudian kita dapat membuat podcast developer_tea dan menambahkan episode # 1 seperti ini:

Saya ingin mendapat notifikasi setiap kali episode baru dirilis.

Kami dapat memperbarui saya setelah menambahkan episode baru ke daftar:

Dan setiap kali saya mendapat pembaruan dari developer_tea, saya dapat melanjutkan dan mengunduh episode terbaru.

Saya menikmati mendengarkan developer_tea sehingga saya merekomendasikannya kepada teman saya, Amber. Sekarang, Amber juga ingin berlangganan.

Kami perlu memastikan Amber juga mendapat pemberitahuan setiap kali episode baru dirilis:

Hmmm, kode ini melakukan apa yang kita inginkan.

Tapi ada masalah.

Setiap kali kami ingin menambahkan pelanggan, kami harus mendefinisikan ulang kelas.

Apakah ada cara untuk memperbarui daftar pelanggan tanpa harus mendefinisikan ulang kelas?

Kita dapat menyimpan daftar pelanggan!

Kelas Podcast baru menyimpan daftar pelanggan dengan bantuan dua metode baru: satu untuk menambah pelanggan dan satu untuk menghapus pelanggan. Ketika sebuah episode dirilis, kami memperbarui setiap pelanggan.

Sayangnya, Amber tidak menikmati podcast sebanyak yang saya lakukan dan memutuskan untuk berhenti berlangganan. Kami menggunakan metode remove_subscriber untuk menghapusnya dari daftar pelanggan.

Yay! Anda baru saja mempelajari pola Observer!

Prinsip Desain di balik pola Pengamat.

Pola Observer menggunakan prinsip desain Loose Coupling:

Upayakan desain yang digabungkan secara longgar di antara objek yang berinteraksi.

Kelas Podcast tidak tahu banyak tentang pelanggannya. Ia hanya tahu setiap pelanggan memiliki metode pembaruan.

Kopling longgar ini meminimalkan ketergantungan antara Podcast dan pelanggannya. Ini juga memaksimalkan fleksibilitas. Selama ia memiliki metode pembaruan, pelanggan dapat berupa apa saja: manusia, sekelompok orang, hewan, atau bahkan mobil.

Takeaways:

  1. Pola Observer mendefinisikan ketergantungan satu-ke-banyak antara objek sehingga ketika satu objek berubah status, semua tanggungannya diberitahu dan diperbarui secara otomatis.
  2. Prinsip desain Longgar Kopling: berusaha untuk desain longgar digabungkan antara objek yang berinteraksi.

Terima kasih sudah membaca. Apakah ada contoh kehidupan nyata lain dari pola Observer yang dapat Anda pikirkan?

Saya menerbitkan ke sihui.io setiap minggu.

Berlangganan sehingga Anda tidak akan melewatkan artikel selanjutnya dari seri ini.

Lain kali kita akan berbicara tentang ...