Iterator
Iterator minangka pola desain prilaku. Nggambarake obyek sing ngidini akses sekuensial menyang unsur obyek agregat tanpa nggunakake deskripsi saben obyek sing dikumpulake.
![Iterator](https://cdn.codegym.cc/images/article/87f809f8-e650-4b92-9d29-2624a2b1a64a/800.jpeg)
Contone, unsur kayata wit, dhaptar sing disambung, tabel hash, lan array bisa dilewati (lan diowahi) nggunakake obyek Iterator.
Iterasi liwat unsur ditindakake dening obyek iterator, dudu koleksi kasebut dhewe. Iki simplifies antarmuka lan implementasine saka koleksi, lan dipun promosiaken misahake luwih logis saka uneg-uneg.
Fitur saka iterator sing ditindakake kanthi lengkap yaiku kode sing nggunakake iterator bisa uga ora ngerti apa-apa babagan jinis agregat iterasi.
Pendekatan iki asring digunakake. Contone, sampeyan ngirim query SQL kanggo database, lan nanggepi sampeyan ngasilake iterator (ing istilah SQL, biasane disebut kursor). Lan kanthi bantuan iterator sing diasilake, sampeyan bisa njupuk larik saka respon SQL siji-siji.
dhawuh
A Command minangka pola desain prilaku sing digunakake ing pemrograman berorientasi obyek sing nggambarake tumindak. Obyek printah ngemot tumindak dhewe lan paramèter.
![dhawuh](https://cdn.codegym.cc/images/article/d46ddf17-e840-4f4b-a505-092e666ec88f/800.jpeg)
Kanggo nelpon cara, sampeyan biasane kudu:
- referensi obyek
- jeneng metode (referensi metode)
- nilai parameter metode
- referensi kanggo konteks sing ngemot obyek sing digunakake
Kabeh data iki kudu dikempalken dadi siji obyek - Command ( printah ).
Nanging ora kabeh: sawise kabeh, wong kudu nglakokaké printah. Dadi pola iki kalebu papat entitas liyane: printah ( command ), panrima perintah ( receiver ), panelpon perintah ( invoker ) lan klien ( klien ).
Objekdhawuhngerti babagan panrima lan nelpon cara panrima. Nilai parameter panrima disimpen ing printah. Panelpon (invoker) ngerti carane nglakokake printah lan bisa uga nglacak printah sing dieksekusi. Panelpon (invoker) ora ngerti apa-apa babagan perintah tartamtu, mung ngerti babagan antarmuka.
Loro-lorone obyek (obyek panggilan lan sawetara obyek perintah) kalebu obyek klien. Klien mutusake prentah sing bakal ditindakake lan kapan. Kanggo nglakokaké printah, iku liwat obyek printah menyang panelpon (invoker).
Nggunakake obyek printah nggampangake kanggo mbangun komponen sing dienggo bareng sing kudu sampeyan utusan utawa nelpon metode kapan wae tanpa kudu ngerti metode kelas utawa paramèter metode.
Nggunakake obyek panelpon (invoker) ngijini sampeyan kanggo nyimpen rekaman printah kaleksanan tanpa perlu kanggo klien ngerti bab model accounting iki (akuntansi kuwi bisa migunani, contone, kanggo ngleksanakake printah batalaken lan redo).
Contone, sampeyan nulis program sing ngidini sampeyan nindakake macem-macem tugas ing jadwal. Ing tangan siji, program sampeyan nglacak tugas lan ngatur peluncuran, ing sisih liya, bisa duwe sawetara eksekutor, sing saben-saben bisa nglakokake perintah saka jinise dhewe. Contone, ngirim SMS, ngirim layang, ngirim pesen menyang Telegram, lsp.
Pengamat
Observer minangka pola desain prilaku. Nindakake mekanisme kelas sing ngidini obyek saka kelas iki nampa kabar babagan owah-owahan ing negara obyek liyane lan kanthi mangkono mirsani.
![Pengamat](https://cdn.codegym.cc/images/article/4ea53747-311e-48ea-a92c-f622b44ac328/800.jpeg)
Kelas sing dadi langganan kelas liyane diarani Subjek , lan kelas langganan diarani Observer .
Nalika ngetrapake pola Observer, kelas ing ngisor iki umume digunakake:
- Observable - antarmuka sing nemtokake cara kanggo nambah, mbusak lan ngabari pengamat;
- Observer - antarmuka ing ngendi pengamat nampa kabar;
- ConcreteObservable minangka kelas konkrit sing ngetrapake antarmuka Observable ;
- ConcreteObserver minangka kelas konkrit sing ngetrapake antarmuka Observer .
Pola Observer digunakake nalika sistem:
- paling ora ana siji obyek sing ngirim pesen;
- paling ora ana siji panampa pesen, lan nomer lan komposisi bisa diganti nalika aplikasi lagi mlaku;
- ngindari kopling kuwat saka kelas sesambungan.
Pola iki asring digunakake ing kahanan sing pangirim pesen ora kasengsem karo apa sing ditindakake dening panampa karo informasi sing diwenehake marang dheweke.
Pengunjung
Pengunjung minangka pola desain prilaku sing nggambarake operasi sing ditindakake ing obyek saka kelas liyane. Nalika ngunjungi utawa ngganti, ora perlu ngganti kelas sing dilayani.
Cithakan kasebut nuduhake teknik klasik kanggo mbalekake informasi jinis sing ilang tanpa nggunakake downcast kaping pindho.
![Pengunjung](https://cdn.codegym.cc/images/article/012e3e42-6151-4ecf-b322-0642841bf923/800.jpeg)
Sampeyan kudu nindakake sawetara operasi pedhot ing sawetara obyek, nanging sampeyan kudu supaya rereged kode sing. Lan ora ana cara utawa kepinginan kanggo takon jinis saben simpul lan matak pointer menyang jinis sing bener sadurunge nindakake operasi sing dikarepake.
Cithakan kudu digunakake yen:
- ana macem-macem obyek saka kelas beda karo antarmuka beda, nanging operasi kudu dileksanakake ing wong sing gumantung ing kelas tartamtu;
- ing struktur, perlu kanggo nindakake macem-macem operasi complicating struktur;
- operasi anyar ing struktur asring ditambahake.
mediator
Mediator minangka pola desain prilaku sing ngidini macem-macem obyek bisa sesambungan nalika njaga kopling sing longgar lan ngindhari kabutuhan obyek supaya bisa dirujuk kanthi jelas.
![Mediator](https://cdn.codegym.cc/images/article/17d10313-3412-461b-82f2-c007d664adb6/800.jpeg)
Pola Mediator ngijini sampeyan kanggo mesthekake interaksi akeh obyek, nalika mbentuk kopling ngeculke lan ngilangke perlu kanggo obyek kanggo jelas nuduhake saben liyane.
Mediator nemtokake antarmuka kanggo ijol-ijolan informasi karo obyekKolega, A mediator tartamtu koordinat tumindak obyekKolega.
Saben kelas Colleague ngerti babagan obyek kasebutMediator, kabeh Kolega mung ijol-ijolan informasi karo perantara, yen ora ana, dheweke kudu langsung ngganti informasi.
Kolegangirim panjalukan menyang Reseller / span> lan nampa panjalukan saka iku. Mediator nindakake prilaku kooperatif kanthi ngirimake saben panjalukan menyang siji utawa luwihKolega.