Documente Academic
Documente Profesional
Documente Cultură
PATTERN
JAVA
DEFINIȚIE:
➤ Potrivit GoF, intenția modelului iterator de design este:
ChannelTypeEnum.java
package com.journaldev.design.iterator;
public enum ChannelTypeEnum {
ENGLISH, HINDI, FRENCH, ALL;
}
➤-ChannelTypeEnum este java enum ( creează câmpuri cu constante fixe) care definește
toate tipurile diferite de canale.
➤ A doua parte a implementării constă în crearea clasei Channel, care primește ca parametrii
frecvența și tipul canalului.
Channel.java
package com.journaldev.design.iterator;
public class Channel {
private double frequency;
private ChannelTypeEnum TYPE;
@Override
public String toString(){
return "Frequency="+this.frequency+", Type="+this.TYPE;
}
}
➤ Interfața ChannelCollection definește contractul pentru implementarea clasei noastre
de colecție. Observați că există metode de adăugare și eliminare a unui canal, dar nu
există nicio metodă care să returneze lista canalelor. ChannelCollection are o metodă
care returnează iteratorul pentru parcurgere.
ChannelCollection.java
package com.journaldev.design.iterator;
}
➤ Interfața ChannelIterator care returnează lista canalelor.
ChannelIterator.java
package com.journaldev.design.iterator;
ChannelCollectionImpl.java
@Override
public ChannelIterator iterator(ChannelTypeEnum type) {
package com.journaldev.design.iterator; return new ChannelIteratorImpl(type, this.channelsList);
}
import java.util.ArrayList;
import java.util.List; private class ChannelIteratorImpl implements ChannelIterator {
@Override
public Channel next() {
Channel c = channels.get(position);
position++;
return c;
}
➤ Observație: implementarea de clasă interioară a interfeței iterator, astfel încât implementarea să nu poată fi
utilizată de nici o altă colecție. Aceeași abordare este urmată și de clasele de colecție toate au o implementare
internă de clasă a interfeței Iterator.
➤ Acum vom scrie un simplu program de testare a modelului iterator pentru a
folosi colecția și iteratorul pentru a parcurge colecția de canale.
IteratorPatternTest.java
package com.journaldev.design.iterator;
}
OUTPUT:
Frequency=98.5, Type=ENGLISH
Frequency=99.5, Type=HINDI
Frequency=100.5, Type=FRENCH
Frequency=101.5, Type=ENGLISH
Frequency=102.5, Type=HINDI
Frequency=103.5, Type=FRENCH
Frequency=104.5, Type=ENGLISH
Frequency=105.5, Type=HINDI
Frequency=106.5, Type=FRENCH
******
Frequency=98.5, Type=ENGLISH
Frequency=101.5, Type=ENGLISH
Frequency=104.5, Type=ENGLISH
CONCLUZII DESPRE ITERATOR PATTERN (MODEL
➤ Modelul Iterator este util atunci când se dorește o modalitate
standard de a repeta o colecție și de a ascunde logica de
implementare din programul client.
➤ Logica pentru iterație este încorporată în colecția însăși și
ajută programul clientului să se repete cu ușurință peste ele.