CodeGym/Kurso sa Java/Modyul 3/Mga pattern ng pag-uugali

Mga pattern ng pag-uugali

Available

Tagapag-ulit

Ang Iterator ay isang pattern ng disenyo ng pag-uugali. Kinakatawan ang isang bagay na nagbibigay-daan sa sunud-sunod na pag-access sa mga elemento ng isang pinagsama-samang bagay nang hindi gumagamit ng mga paglalarawan ng bawat isa sa mga pinagsama-samang bagay.

Tagapag-ulit

Halimbawa, ang mga elemento tulad ng isang puno, isang naka-link na listahan, isang hash table, at isang array ay maaaring i-traverse (at mabago) gamit ang isang Iterator object.

Ang pag-ulit sa pamamagitan ng mga elemento ay ginagawa ng object ng iterator, hindi ng mismong koleksyon. Pinapasimple nito ang interface at pagpapatupad ng koleksyon, at nagpo-promote ng mas lohikal na paghihiwalay ng mga alalahanin.

Ang isang tampok ng isang ganap na ipinatupad na iterator ay ang code na gumagamit ng iterator ay maaaring walang alam tungkol sa uri ng umuulit na pinagsama-samang.

Ang pamamaraang ito ay madalas na ginagamit. Halimbawa, nagpapadala ka ng SQL query sa database, at bilang tugon ay nagbabalik ito sa iyo ng isang iterator (sa mga termino ng SQL, ito ay karaniwang tinatawag na cursor). At sa tulong ng nagresultang iterator, maaari kang kumuha ng mga hilera mula sa tugon ng SQL nang paisa-isa.

utos

Ang Command ay isang pattern ng disenyo ng pag-uugali na ginagamit sa object-oriented na programming na kumakatawan sa isang aksyon. Ang command object ay naglalaman ng mismong aksyon at mga parameter nito.

Utos

Upang tumawag sa isang paraan, karaniwan mong kailangan:

  • sanggunian ng bagay
  • pangalan ng pamamaraan (sanggunian sa pamamaraan)
  • mga halaga ng parameter ng pamamaraan
  • pagtukoy sa konteksto na naglalaman ng mga bagay na ginamit

Ang lahat ng data na ito ay kailangang i-pack sa isang bagay - Command ( command ).

Ngunit hindi lang iyon: pagkatapos ng lahat, dapat na may isakatuparan ng utos. Kaya ang pattern na ito ay kinabibilangan ng apat pang entity: commands ( command ), command receiver ( receiver ), command caller ( invoker ) at client ( client ).

Isang bagayutosalam ang tungkol sa receiver at tinatawagan ang receiver method. Ang mga halaga ng parameter ng receiver ay naka-imbak sa command. Alam ng tumatawag (invoker) kung paano isagawa ang utos at posibleng sinusubaybayan ang mga naisagawang utos. Walang alam ang tumatawag (invoker) tungkol sa isang partikular na utos, ang interface lang ang alam nito.

Ang parehong mga bagay (ang tumatawag na object at ilang command object) ay nabibilang sa object ng kliyente. Ang kliyente ang magpapasya kung aling mga utos ang isasagawa at kung kailan. Upang magsagawa ng isang command, ipinapasa nito ang command object sa tumatawag (invoker).

Ang paggamit ng mga command object ay nagpapadali sa pagbuo ng mga nakabahaging bahagi na kailangan mong italaga o gumawa ng mga method call anumang oras nang hindi kinakailangang malaman ang mga pamamaraan ng klase o mga parameter ng pamamaraan.

Ang paggamit ng object ng tumatawag (invoker) ay nagbibigay-daan sa iyo na magtago ng isang talaan ng mga naisakatuparan na mga utos nang hindi nangangailangan na malaman ng kliyente ang tungkol sa modelong ito ng accounting (maaaring maging kapaki-pakinabang ang naturang accounting, halimbawa, upang ipatupad ang command undo at redo).

Halimbawa, sumusulat ka ng isang programa na nagbibigay-daan sa iyong magsagawa ng iba't ibang mga gawain sa isang iskedyul. Sa isang banda, sinusubaybayan ng iyong programa ang mga gawain at pinamamahalaan ang kanilang paglulunsad, sa kabilang banda, maaari itong magkaroon ng ilang mga tagapagpatupad, bawat isa ay maaaring magsagawa ng mga utos ng sarili nitong uri. Halimbawa, ang pagpapadala ng SMS, pagpapadala ng mga sulat, pagpapadala ng mga mensahe sa Telegram, atbp.

Tagamasid

Ang tagamasid ay isang pattern ng disenyo ng pag-uugali. Nagpapatupad ng mekanismo ng klase na nagpapahintulot sa isang bagay ng klase na ito na makatanggap ng mga abiso tungkol sa mga pagbabago sa estado ng iba pang mga bagay at sa gayon ay obserbahan ang mga ito.

Tagamasid

Ang mga klase kung saan naka-subscribe ang ibang mga klase ay tinatawag na Mga Paksa , at ang mga klase sa pag-subscribe ay tinatawag na Mga Tagamasid .

Kapag ipinapatupad ang pattern ng Observer, karaniwang ginagamit ang mga sumusunod na klase:

  • Mapapansin - isang interface na tumutukoy sa mga pamamaraan para sa pagdaragdag, pag-alis at pag-abiso sa mga nagmamasid;
  • Tagamasid - ang interface kung saan natatanggap ng tagamasid ang abiso;
  • Ang ConcreteObservable ay isang kongkretong klase na nagpapatupad ng Observable interface ;
  • Ang ConcreteObserver ay isang kongkretong klase na nagpapatupad ng interface ng Observer .

Ginagamit ang pattern ng Observer kapag ang system ay:

  • mayroong kahit isang bagay na nagpapadala ng mga mensahe;
  • mayroong hindi bababa sa isang tatanggap ng mga mensahe, at ang kanilang numero at komposisyon ay maaaring magbago habang tumatakbo ang application;
  • iniiwasan ang malakas na pagsasama ng mga nakikipag-ugnayang klase.

Ang pattern na ito ay kadalasang ginagamit sa mga sitwasyon kung saan ang nagpadala ng mga mensahe ay hindi interesado sa kung ano ang ginagawa ng mga tatanggap sa impormasyong ibinigay sa kanila.

Bisita

Ang bisita ay isang pattern ng disenyo ng pag-uugali na naglalarawan ng isang operasyon na ginagawa sa mga bagay ng iba pang mga klase. Kapag bumisita o nagbabago, hindi na kailangang baguhin ang mga serbisyong klase.

Ang template ay nagpapakita ng klasikong pamamaraan para sa pagbawi ng nawawalang uri ng impormasyon nang hindi gumagamit ng dobleng pagpapadala ng downcast.

Bisita

Kailangan mong gumawa ng ilang naka-disconnect na operasyon sa isang bilang ng mga bagay, ngunit kailangan mong iwasang marumi ang kanilang code. At walang paraan o pagnanais na i-query ang uri ng bawat node at ihagis ang pointer sa tamang uri bago isagawa ang nais na operasyon.

Dapat gamitin ang template kung:

  • mayroong iba't ibang mga bagay ng iba't ibang klase na may iba't ibang mga interface, ngunit ang mga operasyon ay dapat gawin sa mga ito na nakasalalay sa mga partikular na klase;
  • sa istraktura, kinakailangan upang magsagawa ng iba't ibang mga operasyon na kumplikado sa istraktura;
  • Ang mga bagong operasyon sa istraktura ay madalas na idinagdag.

tagapamagitan

Ang tagapamagitan ay isang pattern ng disenyo ng pag-uugali na nagbibigay-daan sa maraming bagay na makipag-ugnayan habang pinapanatili ang maluwag na pagkakabit at iniiwasan ang pangangailangan para sa mga bagay na tahasang sumangguni sa isa't isa.

Tagapamagitan

Ang pattern ng Tagapamagitan ay nagbibigay-daan sa iyo upang matiyak ang pakikipag-ugnayan ng maraming mga bagay, habang bumubuo ng isang maluwag na pagkabit at inaalis ang pangangailangan para sa mga bagay na tahasang sumangguni sa isa't isa.

Tinutukoy ng tagapamagitan ang isang interface para sa pagpapalitan ng impormasyon sa mga bagayMga kasamahan, Ang isang partikular na tagapamagitan ay nag-uugnay sa mga aksyon ng mga bagayMga kasamahan.

Alam ng bawat Colleague class ang tungkol sa object nitoTagapamagitan, lahat ng Mga Kasamahan ay nakikipagpalitan lamang ng impormasyon sa isang tagapamagitan, kung wala siya ay kailangan nilang direktang makipagpalitan ng impormasyon.

Mga kasamahanmagpadala ng mga kahilingan sa Reseller/span> at tumanggap ng mga kahilingan mula dito. Ang tagapamagitan ay nagpapatupad ng pakikipagtulungan sa pamamagitan ng pagpapasa ng bawat kahilingan sa isa o higit paMga kasamahan.

1
Gawain
Modyul 3,  antasaralin
Naka-lock
Total Iteration
task4113
1
Gawain
Modyul 3,  antasaralin
Naka-lock
Easy-calculator
task4114
1
Gawain
Modyul 3,  antasaralin
Naka-lock
You've Got a Discount!
task4115
1
Gawain
Modyul 3,  antasaralin
Naka-lock
Wool and Stars
task4116
1
Gawain
Modyul 3,  antasaralin
Naka-lock
Greetings in this Chat
task4117
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito