Iterator

Iterator adalah pola desain perilaku. Merupakan objek yang memungkinkan akses berurutan ke elemen objek agregat tanpa menggunakan deskripsi dari masing-masing objek agregat.

Iterator

Misalnya, elemen seperti pohon, daftar tertaut, tabel hash, dan larik dapat dilintasi (dan dimodifikasi) menggunakan objek Iterator.

Iterasi melalui elemen dilakukan oleh objek iterator, bukan oleh koleksi itu sendiri. Ini menyederhanakan antarmuka dan implementasi koleksi, dan mempromosikan pemisahan masalah yang lebih logis.

Fitur dari iterator yang diimplementasikan sepenuhnya adalah bahwa kode yang menggunakan iterator mungkin tidak tahu apa-apa tentang jenis agregat yang diulang.

Pendekatan ini sangat sering digunakan. Misalnya, Anda mengirim kueri SQL ke database, dan sebagai tanggapannya, Anda mengembalikan iterator (dalam istilah SQL, ini biasanya disebut kursor). Dan dengan bantuan iterator yang dihasilkan, Anda dapat mengambil baris dari respons SQL satu per satu.

memerintah

Perintah adalah pola desain perilaku yang digunakan dalam pemrograman berorientasi objek yang mewakili suatu tindakan. Objek perintah berisi tindakan itu sendiri dan parameternya.

Memerintah

Untuk memanggil metode, Anda biasanya membutuhkan:

  • referensi objek
  • nama metode (referensi metode)
  • nilai parameter metode
  • referensi ke konteks yang berisi objek yang digunakan

Semua data ini perlu dikemas menjadi satu objek - Command ( command ).

Tapi bukan itu saja: bagaimanapun, seseorang harus menjalankan perintah. Jadi pola ini mencakup empat entitas lagi: perintah ( command ), penerima perintah ( receiver ), pemanggil perintah ( invoker ) dan klien ( klien ).

Sebuah Objekmemerintahtahu tentang penerima dan memanggil metode penerima. Nilai parameter penerima disimpan dalam perintah. Penelepon (invoker) tahu cara menjalankan perintah dan mungkin melacak perintah yang dijalankan. Penelepon (invoker) tidak tahu apa-apa tentang perintah tertentu, ia hanya tahu tentang antarmuka.

Kedua objek (objek panggilan dan beberapa objek perintah) milik objek klien. Klien memutuskan perintah mana yang akan dieksekusi dan kapan. Untuk mengeksekusi perintah, ia meneruskan objek perintah ke pemanggil (invoker).

Menggunakan objek perintah memudahkan pembuatan komponen bersama yang Anda perlukan untuk mendelegasikan atau melakukan pemanggilan metode kapan saja tanpa harus mengetahui metode kelas atau parameter metode.

Menggunakan objek pemanggil (invoker) memungkinkan Anda menyimpan catatan perintah yang dieksekusi tanpa perlu klien mengetahui tentang model akuntansi ini (akuntansi semacam itu dapat berguna, misalnya, untuk mengimplementasikan perintah undo dan redo).

Misalnya, Anda sedang menulis program yang memungkinkan Anda melakukan berbagai tugas sesuai jadwal. Di satu sisi, program Anda melacak tugas dan mengelola peluncurannya, di sisi lain, ia dapat memiliki beberapa pelaksana, yang masing-masing dapat menjalankan perintah dari jenisnya sendiri. Misalnya mengirim SMS, mengirim surat, mengirim pesan ke Telegram, dll.

Pengamat

Pengamat adalah pola desain perilaku. Menerapkan mekanisme kelas yang memungkinkan objek kelas ini menerima pemberitahuan tentang perubahan keadaan objek lain dan dengan demikian mengamatinya.

Pengamat

Kelas yang berlangganan kelas lain disebut Subjek , dan kelas berlangganan disebut Pengamat .

Saat menerapkan pola Pengamat, kelas-kelas berikut biasanya digunakan:

  • Dapat diamati - antarmuka yang mendefinisikan metode untuk menambah, menghapus, dan memberi tahu pengamat;
  • Pengamat - antarmuka tempat pengamat menerima pemberitahuan;
  • ConcreteObservable adalah kelas beton yang mengimplementasikan interface Observable ;
  • ConcreteObserver adalah kelas beton yang mengimplementasikan interface Observer .

Pola Pengamat digunakan ketika sistem:

  • setidaknya ada satu objek yang mengirimkan pesan;
  • setidaknya ada satu penerima pesan, dan jumlah serta komposisinya dapat berubah saat aplikasi berjalan;
  • menghindari kopling yang kuat dari kelas yang berinteraksi.

Pola ini sering digunakan dalam situasi di mana pengirim pesan tidak tertarik dengan apa yang dilakukan penerima dengan informasi yang diberikan kepadanya.

Pengunjung

Pengunjung adalah pola desain perilaku yang menggambarkan operasi yang dilakukan pada objek kelas lain. Saat mengunjungi atau berubah, tidak perlu mengubah kelas yang dilayani.

Templat ini mendemonstrasikan teknik klasik untuk memulihkan informasi tipe yang hilang tanpa menggunakan downcast pengiriman ganda.

Pengunjung

Anda perlu melakukan beberapa operasi terputus pada sejumlah objek, tetapi Anda harus menghindari polusi kode mereka. Dan tidak ada cara atau keinginan untuk menanyakan jenis setiap node dan mengarahkan penunjuk ke jenis yang benar sebelum melakukan operasi yang diinginkan.

Templat harus digunakan jika:

  • ada berbagai objek dari kelas yang berbeda dengan antarmuka yang berbeda, tetapi operasi harus dilakukan pada mereka yang bergantung pada kelas tertentu;
  • pada struktur, perlu dilakukan berbagai operasi yang memperumit struktur;
  • operasi baru pada struktur sering ditambahkan.

penengah

Mediator adalah pola desain perilaku yang memungkinkan banyak objek untuk berinteraksi dengan tetap mempertahankan kopling longgar dan menghindari kebutuhan objek untuk merujuk satu sama lain secara eksplisit.

Penengah

Pola Mediator memungkinkan Anda untuk memastikan interaksi banyak objek, sambil membentuk sambungan longgar dan menghilangkan kebutuhan objek untuk merujuk satu sama lain secara eksplisit.

Mediator mendefinisikan antarmuka untuk bertukar informasi dengan objekRekan kerja, Mediator tertentu mengoordinasikan tindakan objekRekan kerja.

Setiap kelas Kolega tahu tentang objeknyaPenengah, semua Kolega bertukar informasi hanya dengan perantara, dalam ketidakhadirannya mereka harus bertukar informasi secara langsung.

Rekan kerjamengirim permintaan ke Reseller/span> dan menerima permintaan darinya. Mediator menerapkan perilaku kooperatif dengan meneruskan setiap permintaan ke satu atau lebihRekan kerja.