Iterator
Iterator ialah corak reka bentuk tingkah laku. Mewakili objek yang membenarkan capaian berjujukan kepada elemen objek agregat tanpa menggunakan perihalan setiap objek agregat.
![Iterator](https://cdn.codegym.cc/images/article/87f809f8-e650-4b92-9d29-2624a2b1a64a/800.jpeg)
Contohnya, elemen seperti pokok, senarai terpaut, jadual cincang dan tatasusunan boleh dilalui (dan diubah suai) menggunakan objek Iterator.
Lelaran melalui elemen dilakukan oleh objek iterator, bukan oleh koleksi itu sendiri. Ini memudahkan antara muka dan pelaksanaan koleksi, dan menggalakkan pemisahan kebimbangan yang lebih logik.
Ciri lelaran yang dilaksanakan sepenuhnya ialah kod yang menggunakan lelaran mungkin tidak mengetahui apa-apa tentang jenis agregat lelaran.
Pendekatan ini sangat kerap digunakan. Sebagai contoh, anda menghantar pertanyaan SQL ke pangkalan data, dan sebagai tindak balas, ia mengembalikan anda seorang lelaran (dalam istilah SQL, ia biasanya dipanggil kursor). Dan dengan bantuan iterator yang terhasil, anda boleh mengambil baris daripada respons SQL satu demi satu.
perintah
Perintah ialah corak reka bentuk tingkah laku yang digunakan dalam pengaturcaraan berorientasikan objek yang mewakili tindakan. Objek arahan mengandungi tindakan itu sendiri dan parameternya.
![Perintah](https://cdn.codegym.cc/images/article/d46ddf17-e840-4f4b-a505-092e666ec88f/800.jpeg)
Untuk memanggil kaedah, anda biasanya memerlukan:
- rujukan objek
- nama kaedah (rujukan kaedah)
- nilai parameter kaedah
- merujuk kepada konteks yang mengandungi objek yang digunakan
Semua data ini perlu dibungkus ke dalam satu objek - Command ( command ).
Tetapi bukan itu sahaja: selepas semua, seseorang mesti melaksanakan arahan itu. Jadi corak ini merangkumi empat lagi entiti: arahan ( command ), penerima arahan ( receiver ), pemanggil arahan ( invoker ) dan klien ( client ).
Sebuah objekperintahmengetahui tentang penerima dan memanggil kaedah penerima. Nilai parameter penerima disimpan dalam arahan. Pemanggil (invoker) tahu cara melaksanakan arahan dan mungkin menjejaki arahan yang dilaksanakan. Pemanggil (invoker) tidak tahu apa-apa tentang arahan tertentu, ia hanya tahu tentang antara muka.
Kedua-dua objek (objek panggilan dan beberapa objek arahan) tergolong dalam objek klien. Pelanggan memutuskan arahan yang hendak dilaksanakan dan bila. Untuk melaksanakan arahan, ia menghantar objek arahan kepada pemanggil (invoker).
Menggunakan objek arahan memudahkan anda membina komponen kongsi yang anda perlukan untuk mewakilkan atau membuat panggilan kaedah pada bila-bila masa tanpa perlu mengetahui kaedah kelas atau parameter kaedah.
Menggunakan objek pemanggil (invoker) membolehkan anda menyimpan rekod perintah yang dilaksanakan tanpa perlu pelanggan mengetahui tentang model perakaunan ini (perakaunan sedemikian boleh berguna, contohnya, untuk melaksanakan perintah buat asal dan buat semula).
Sebagai contoh, anda sedang menulis program yang membolehkan anda melaksanakan pelbagai tugas mengikut jadual. Di satu pihak, program anda menjejaki tugas dan menguruskan pelancarannya, sebaliknya, ia boleh mempunyai beberapa pelaksana, yang masing-masing boleh melaksanakan arahan jenisnya sendiri. Contohnya, menghantar SMS, menghantar surat, menghantar mesej ke Telegram, dsb.
Pemerhati
Pemerhati ialah corak reka bentuk tingkah laku. Melaksanakan mekanisme kelas yang membenarkan objek kelas ini menerima pemberitahuan tentang perubahan dalam keadaan objek lain dan dengan itu memerhatikannya.
![Pemerhati](https://cdn.codegym.cc/images/article/4ea53747-311e-48ea-a92c-f622b44ac328/800.jpeg)
Kelas yang dilanggan oleh kelas lain dipanggil Subjek , dan kelas yang dilanggan dipanggil Pemerhati .
Apabila melaksanakan corak Pemerhati, kelas berikut biasanya digunakan:
- Boleh diperhatikan - antara muka yang mentakrifkan kaedah untuk menambah, mengalih keluar dan memberitahu pemerhati;
- Pemerhati - antara muka yang melaluinya pemerhati menerima pemberitahuan;
- ConcreteObservable ialah kelas konkrit yang melaksanakan antara muka Observable ;
- ConcreteObserver ialah kelas konkrit yang melaksanakan antara muka Observer .
Corak Pemerhati digunakan apabila sistem:
- terdapat sekurang-kurangnya satu objek yang menghantar mesej;
- terdapat sekurang-kurangnya seorang penerima mesej, dan nombor serta komposisi mereka mungkin berubah semasa aplikasi sedang berjalan;
- mengelakkan gandingan kuat kelas berinteraksi.
Corak ini sering digunakan dalam situasi di mana pengirim mesej tidak berminat dengan perkara yang dilakukan oleh penerima dengan maklumat yang diberikan kepada mereka.
Pelawat
Pelawat ialah corak reka bentuk tingkah laku yang menerangkan operasi yang dilakukan pada objek kelas lain. Apabila melawat atau menukar, tidak perlu menukar kelas perkhidmatan.
Templat menunjukkan teknik klasik untuk memulihkan maklumat jenis yang hilang tanpa menggunakan downcast dua kali.
![Pelawat](https://cdn.codegym.cc/images/article/012e3e42-6151-4ecf-b322-0642841bf923/800.jpeg)
Anda perlu melakukan beberapa operasi terputus sambungan pada beberapa objek, tetapi anda perlu mengelak daripada mencemarkan kod mereka. Dan tidak ada cara atau keinginan untuk menanyakan jenis setiap nod dan menghantar penuding ke jenis yang betul sebelum melakukan operasi yang diingini.
Templat harus digunakan jika:
- terdapat pelbagai objek kelas yang berbeza dengan antara muka yang berbeza, tetapi operasi mesti dilakukan pada mereka yang bergantung pada kelas tertentu;
- pada struktur, perlu melakukan pelbagai operasi yang merumitkan struktur;
- operasi baru pada struktur sering ditambah.
pengantara
Pengantara ialah corak reka bentuk tingkah laku yang membolehkan berbilang objek berinteraksi sambil mengekalkan gandingan longgar dan mengelakkan keperluan untuk objek merujuk satu sama lain secara eksplisit.
![Pengantara](https://cdn.codegym.cc/images/article/17d10313-3412-461b-82f2-c007d664adb6/800.jpeg)
Corak Pengantara membolehkan anda memastikan interaksi banyak objek, sambil membentuk gandingan longgar dan menghapuskan keperluan untuk objek merujuk satu sama lain secara eksplisit.
Pengantara mentakrifkan antara muka untuk bertukar maklumat dengan objekRakan sekerja, Pengantara tertentu menyelaraskan tindakan objekRakan sekerja.
Setiap kelas Rakan Sekerja tahu tentang objeknyaPengantara, semua Rakan Sekerja bertukar maklumat hanya dengan perantara, sekiranya beliau tidak hadir, mereka perlu bertukar maklumat secara langsung.
Rakan sekerjahantar permintaan kepada Penjual Semula/span> dan terima permintaan daripadanya. Pengantara melaksanakan tingkah laku kerjasama dengan memajukan setiap permintaan kepada satu atau lebihRakan sekerja.