A strategy tervezési minta

A minta célja:

Egy algoritmus családot határoz meg, amelyben az algoritmusokat egyenként egységbe zárjuk és felcserélhetővé tesszük, vagy az algoritmusnak összetett adatszerkezetei vannak, amelyeket egységbe akarunk zárni. Egy osztály viselkedésének megváltoztatása nem származtatással lesz megvalósítva, hanem interfészen keresztül. A módosított osztályok pedig megvalósítják ezt az interfészt. Ez a gyakorlatban azért jó, mert az osztály viselkedését úgy tudjuk megváltoztatni, hogy bámilyen kódot mélyebben módosítani kellene. Ehelyett dinamikusan futási időben vagy statikusan tervezéskor ki tudjuk cserélni az adott osztályra mutató referenciát.

Gyakorlati példák:

  1. Form mezők validálása: Van egy validátor ősosztályunk és a különböző típusú beviteli mezők validálását megvalósító osztályok a stratégiai interfészen keresztül megvalósítják a konkrét algoritmus metódusokat. Pl: jelszó validátor, név validátor, telefonszám validátor stb …
  2. Esemény naplózása: Van egy Log osztályunk, aminek az eredeti metódusa a különböző üzeneteket egy fájlba írja. Az idők folyamnán viszont szeretnénk kiterjeszteni a működését és azt szeretnénk, hogy adatbázisba is írjon vagy különböző formátumokba is legyen lehetőség naplózni. (XML, HTML, String)
  3. Objektumok rendezése: Van egy Objektum gyűjteményünk, amit különböző módszerek szerint szeretnénk rendezni. Az egyes rendezési megoldásokat különböző osztályok valósítják meg. Ez inkább elméleti példa, a gyakorlatban általában csak demonstrációs céllal alkalmazhatunk ilyet.
  4. Termékek árazása: Van egy feltételezett rendszerünk, ahol termékek vannak és ezeknek a végső árának a meghatározása több dologtól függenek és többféle kiszámítási módszer létezik. Ebben az esetben is hasznos lehet egy stratégiai minta, így az árképzési logikát jól el tudjuk különíteni a többi funkciótól.

Ezeken kívül számtalan gyakorlati megvalósítás létezhet és ezek a konkrét feladattól és tervtől függenek. Az előbb említettek csak néhány megvalósítási példa volt.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter


A bejegyzés kategóriája:Programozás, Tervezési minták and tagged . Vedd fel a kedvencek közé: link. Szólj hozzá vagy hagyj egy trackback-et:Trackback URL.

Egy Hozzászólás

  1. rook
    Posted 2011 September 27 at 18:11 | Permalink

    Lehet, hogy csöndben vagyok, de várom ám a folytatást :D

Szólj hozzá

Hozzászólás küldéséhez Be kell jelentkezni