Iterátor

Az Iterátor egy viselkedési tervezési minta. Olyan objektumot jelöl, amely szekvenciális hozzáférést tesz lehetővé egy összesített objektum elemeihez anélkül, hogy az egyes összesített objektumok leírását használná.

Iterátor

Például az olyan elemek, mint a fa, egy linkelt lista, egy hash tábla és egy tömb, bejárhatók (és módosíthatók) egy Iterator objektum segítségével.

Az elemeken keresztüli iterációt az iterátor objektum végzi, nem maga a gyűjtemény. Ez leegyszerűsíti a gyűjtemény felületét és megvalósítását, és elősegíti a problémák logikusabb elkülönítését.

A teljesen megvalósított iterátor jellemzője, hogy az iterátort használó kód nem tudhat semmit az iterált aggregátum típusáról.

Ezt a megközelítést nagyon gyakran használják. Például elküld egy SQL-lekérdezést az adatbázisnak, és válaszul egy iterátort ad vissza (SQL-ben általában kurzornak nevezik). A kapott iterátor segítségével pedig sorokat vehetünk ki az SQL válaszból egyenként.

parancs

A parancs egy viselkedési tervezési minta, amelyet az objektumorientált programozásban használnak, és amely egy műveletet reprezentál. A parancsobjektum magát a műveletet és annak paramétereit tartalmazza.

Parancs

Egy módszer meghívásához általában a következőkre van szüksége:

  • objektum hivatkozás
  • metódus neve (a módszer hivatkozása)
  • módszer paraméterértékei
  • hivatkozás a használt objektumokat tartalmazó kontextusra

Mindezeket az adatokat egy objektumba kell csomagolni - Command ( parancs ).

De ez még nem minden: végül is valakinek végre kell hajtania a parancsot. Tehát ez a minta további négy entitást tartalmaz: parancsok ( parancs ), parancsfogadó ( vevő ), parancshívó ( invoker ) és kliens ( kliens ).

Egy tárgyparancstud a vevőről és meghívja a vevő metódusát. A vevő paraméterei a parancsban tárolódnak. A hívó (invoker) tudja, hogyan kell végrehajtani a parancsot, és esetleg nyomon követi a végrehajtott parancsokat. A hívó (invoker) semmit sem tud egy adott parancsról, csak az interfészről tud.

Mindkét objektum (a hívó objektum és több parancsobjektum) a kliens objektumhoz tartozik. A kliens dönti el, hogy mely parancsokat és mikor hajtsa végre. A parancs végrehajtásához átadja a parancs objektumot a hívónak (invoker).

A parancsobjektumok használata megkönnyíti a megosztott összetevők felépítését, amelyeket bármikor delegálhat vagy metódushívásokat kell végrehajtania anélkül, hogy ismernie kellene az osztálymetódusokat vagy a metódusparamétereket.

A hívó objektum (invoker) használata lehetővé teszi a végrehajtott parancsok nyilvántartását anélkül, hogy az ügyfélnek tudnia kellene erről az elszámolási modellről (az ilyen elszámolás hasznos lehet például a visszavonás és újraindítás parancs végrehajtásához).

Például olyan programot ír, amely lehetővé teszi különféle feladatok ütemezett végrehajtását. A programod egyrészt követi a feladatokat és kezeli azok indítását, másrészt több végrehajtója is lehet, amelyek mindegyike saját típusú parancsokat hajthat végre. Például SMS küldés, levélküldés, üzenetküldés a Telegramnak stb.

Megfigyelő

Az Observer egy viselkedési tervezési minta. Olyan osztálymechanizmust valósít meg, amely lehetővé teszi, hogy az osztály objektumai értesítéseket kapjanak más objektumok állapotának változásairól, és így megfigyeljék azokat.

Megfigyelő

Azokat az osztályokat, amelyekre más osztályok előfizetnek, alanyoknak , a feliratkozó osztályokat pedig megfigyelőknek nevezik .

Az Observer minta implementálásakor általában a következő osztályokat használják:

  • Megfigyelhető - olyan interfész, amely meghatározza a megfigyelők hozzáadásának, eltávolításának és értesítésének módszereit;
  • Megfigyelő - az a felület, amelyen keresztül a megfigyelő megkapja az értesítést;
  • A ConcreteObservable egy konkrét osztály, amely megvalósítja az Observable interfészt ;
  • A ConcreteObserver egy konkrét osztály, amely megvalósítja az Observer felületet .

Az Observer mintát akkor használják, ha a rendszer:

  • van legalább egy objektum, amely üzeneteket küld;
  • az üzeneteknek legalább egy címzettje van, és számuk és összetételük változhat az alkalmazás futása közben;
  • elkerüli az egymásra ható osztályok erős összekapcsolását.

Ezt a mintát gyakran alkalmazzák olyan helyzetekben, amikor az üzenet küldőjét nem érdekli, mit kezdenek a címzettek a nekik adott információval.

Látogató

A látogató egy viselkedési tervezési minta, amely leír egy műveletet, amelyet más osztályok objektumain hajtanak végre. Látogatás vagy változás esetén nincs szükség a kiszolgált osztályok megváltoztatására.

A sablon bemutatja az elveszett típusú információk visszaállításának klasszikus technikáját anélkül, hogy kétszeres lefelé továbbítást kellene igénybe venni.

Látogató

El kell végeznie néhány leválasztott műveletet számos objektumon, de el kell kerülnie a kódjuk szennyezését. És nincs mód vagy vágy arra, hogy lekérdezzük az egyes csomópontok típusát, és a mutatót a megfelelő típusra irányítsuk a kívánt művelet végrehajtása előtt.

A sablont akkor kell használni, ha:

  • különböző osztályú objektumok vannak különböző interfészekkel, de rajtuk olyan műveleteket kell végrehajtani, amelyek meghatározott osztályoktól függenek;
  • a szerkezeten különféle, a szerkezetet bonyolító műveleteket kell végrehajtani;
  • gyakran új műveleteket adnak hozzá a szerkezethez.

közvetítő

A közvetítő egy viselkedési tervezési minta, amely lehetővé teszi több objektum interakcióját, miközben fenntartja a laza csatolást, és elkerüli, hogy az objektumok kifejezetten egymásra utaljanak.

Közvetítő

A közvetítő minta lehetővé teszi számos objektum interakciójának biztosítását, miközben laza csatolást képez, és kiküszöböli annak szükségességét, hogy az objektumok kifejezetten egymásra utaljanak.

A közvetítő interfészt határoz meg az objektumokkal való információcseréhezKollégák, Egy adott közvetítő koordinálja az objektumok tevékenységétKollégák.

Minden Kolléga osztály ismeri a tárgyátKözvetítő, minden Kolléga csak közvetítővel cserél információt, az ő távollétében közvetlenül kellene információt cserélniük.

Kollégákkéréseket küldhet a Viszonteladónak/span>nak, és kéréseket fogadhat tőle. A közvetítő együttműködő magatartást valósít meg úgy, hogy minden kérést továbbít egy vagy több feléKollégák.