Salsa Creative Commons License 2002.07.23 0 0 161
A Responsibilities peldaul nem szerepel a konyvben, legalabbis nem ezen a neven (valszeg a Chain of Responsibilities az).

A Bridge az egy eleg hosszu tortenet, most passzolom :)

Az Iterator az olyasmi, hogy van egy adatszerkezeted es nyilvan hasznalsz valamilyen modszert, hogy a benne levo adatokat elerd, altalaban egy fuggvenyt ami visszaadja az adott erteket (pl. a Javas Vector-nak van egy get(int index) fuggvenye), akkor altalaban az eleres HOGYAN-ja (a get fuggveny) fugg az adatszerkezettol (a Vector-tol). Ha le akarod cserelni az adatszerkezetet, mondjuk egy Set-re, akkor at kell irnod azt is, hogy hogyan ered el az adatszerkezetet, mert a Set-nek nincs get(int index) fuggvenye. Ha azt sok helyen kell lecserelned, akkor az kellemetlen lehet, sok ido, tobb hibalehetoseg stb.
Ezert kulonvalasszuk az eleres modjat az adatszerkezettol: csinalunk egy Iterator interface-t a kovetkezo methodusokkal:

interface Iterator {
// van-e kovetkezo elem
boolean hasNext();
// visszaadja a kovetkezo elemet
Object next();
}

Mind a ket adatszerkezetnek (Vector es Set) adunk egy iterator() fuggvenyt, ami visszater egy Iterator-ral, ahol persze hatterben ott van egy osztaly (illetve ketto, egy a Vectorhoz, egy a Set-hez) ami implementalja az Iterator interface-t, de arrol nekunk nem is kell tudni (ezert is jo dolog az interface!). Es igy mind a ket adatszerkezet elerheto azonos modon:

Vector adat;
//HashSet adat;
Iterator iterator= adat.iterator();
while (iterator.hasNext()) {
Object adat= iterator.next();
// itt csinalsz valamit az adattal
}

A lenyeg az, hogy egy nagyon absztrakt dolgot (az eleres HOGYANjat) egy osztalyba, illetve interface-be rakjak es elkulonitik az adattol.
Tovabbi lepes lehet, hogy ha kulonbozo iteratorokat definialhatunk, amik persze mind az Iterator interface-t implementaljak, de mas mas funkciokat valositanak meg pl: minden masodik elemet adja vissza, minden harmadik, az eleres akkor is ugyanolyan marad. Vagy ha egy fa strukturat kell kulonbozokeppen bejarni, akkor jol johet hogy csak az Iterator-t megvalosito osztalyt kell lecserelni.

Szoval nagyjabol ennyi, a tobbirol is dumalhatunk.

Salsa

Előzmény: despil_hun (160)