[JAVA] Entwurfsmuster ~ Iterator ~

1. Zuallererst

Hier ist eine Zusammenfassung des ** Iterator-Musters ** im GoF-Entwurfsmuster.

2. Was ist das Iteratormuster?

3. Beispielklassendiagramm

Iterator.PNG

4. Beispielprogramm

Es ist ein Programm, das Schüler in eine Klasse (Klassenzimmer) einordnet und die Namen der Schüler der Reihe nach anzeigt.

4-1. Iterator-Schnittstelle

Eine Schnittstelle, die Elemente nacheinander scannt.

Iterator.java


public interface Iterator {
	public abstract boolean hasNext();
	public abstract Object next();
}

4-2. Aggregierte Schnittstelle

Eine Schnittstelle, die Iterator erstellt. In der Stichprobe wird es als "Aggregat" bezeichnet.

Aggregate.java


public interface Aggregate {
	public abstract Iterator iterator();
}

4-3. Schülerklasse

Eine Klasse, die ein Element eines Aggregats ist. In der Stichprobe ist es "Student".

Student.java


public class Student {

	private String name;

	public Student(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

4-4. ClassRoom-Klasse

Eine Klasse, die die von Aggregate definierte Schnittstelle implementiert. In der Stichprobe wird es als "Klassenzimmer" bezeichnet.

ClassRoom.java


public class ClassRoom implements Aggregate {

	private Student[] students;
	private int last = 0;

	public ClassRoom(int maxsize) {
		this.students = new Student[maxsize];
	}

	public Student getStudentAt(int index) {
		return students[index];
	}

	public void appendStudent(Student student) {
		this.students[last] = student;
		last++;
	}

	public int getLength() {
		return last;
	}

	public Iterator iterator() {
		return new ClassRoomIterator(this);
	}
}

4-5. ClassRoomIterator-Klasse

Eine Klasse, die die von Iterator definierte Schnittstelle implementiert.

ClassRoomIterator.java


public class ClassRoomIterator implements Iterator {

	private ClassRoom classRoom;
	private int index;

	public ClassRoomIterator(ClassRoom classRoom) {
		this.classRoom = classRoom;
		this.index = 0;
	}

	public boolean hasNext() {
		if (index < classRoom.getLength()) {
			return true;
		} else {
			return false;
		}
	}

	public Object next() {
		Student student = classRoom.getStudentAt(index);
		index++;
		return student;
	}
}

4-6 Hauptklasse

Diese Klasse führt die Hauptverarbeitung durch.

Main.java


public class Main {
	public static void main(String[] args) {

		ClassRoom classRoom = new ClassRoom(4);
		classRoom.appendStudent(new Student("Tanaka"));
		classRoom.appendStudent(new Student("Yamada"));
		classRoom.appendStudent(new Student("Suzuki"));
		classRoom.appendStudent(new Student("Sato"));

		Iterator iterator= classRoom.iterator();

		while (iterator.hasNext()) {
			Student student = (Student)iterator.next();
			System.out.println(student.getName());
		}
	}
}

4-7 Ausführungsergebnis

Tanaka
Yamada
Suzuki
Sato

5. Vorteile

Der Vorteil des Iteratormusters besteht darin, dass es getrennt von der Implementierung gezählt werden kann. Entwurfsmuster ermöglichen die Verwendung von Klassen als Teile und fördern die Wiederverwendbarkeit. Die einzigen Iterator-Methoden, die in der ** Hauptklasse ** des Beispielprogramms verwendet werden, sind ** hasNext () und next () **. Mit anderen Worten, die Implementierung hängt nicht von der ** ClassRoom-Klasse ** ab, sodass Sie sich keine Gedanken über die Größe des Arrays machen müssen.

  1. GitHub

7. Liste der Entwurfsmuster

8. Referenz

Dieser Artikel und das Beispielprogramm wurden basierend auf den folgenden Büchern erstellt.

Es war sehr leicht zu verstehen und ich habe viel gelernt. Vielen Dank. Die detaillierten Erklärungen zu den Entwurfsmustern und Beispielprogrammen sind geschrieben. Schauen Sie sich also auch die Bücher an.

Recommended Posts

Entwurfsmuster ~ Iterator ~
Iteratormuster
Iteratormuster
Entwurfsmuster ~ Builder ~
Entwurfsmuster ~ Besucher ~
Entwurfsmuster ~ Proxy ~
Entwurfsmuster ~ Strategie ~
Entwurfsmuster ~ Singleton ~
Entwurfsmuster ~ Composite ~
Entwurfsmuster (2): Builder
Entwurfsmuster (1): AbstractFactory
Entwurfsmuster ~ Befehl ~
Entwurfsmuster ~ Fassade ~
Entwurfsmuster ~ Brücke ~
Entwurfsmuster ~ Mediator ~
Entwurfsmuster ~ Dekorateur ~
Entwurfsmuster ~ Interpreter ~
Entwurfsmuster ~ Beobachter ~
Entwurfsmuster ~ Prototyp ~
Entwurfsmuster ~ Memento ~
Entwurfsmuster ~ Adapter ~
Entwurfsmuster ~ Fliegengewicht ~
Entwurfsmuster ~ Fabrikmethode ~
Entwurfsmuster ~ Abstrakte Fabrik ~
Zusammenfassung des GoF-Entwurfsmusters
Entwurfsmuster ~ Vorlagenmethode ~
Zusammenfassung des Java-Entwurfsmusters
Entwurfsmuster ~ Verantwortungskette ~
[Entwurfsmuster] Java-Kernbibliothek
Einführung in Entwurfsmuster (Iterator)
Entwurfsmuster nach Ruby Template-Methode Musternotiz
C # gekautes Designmuster: TemplateMethod
Anwendungsbeispiel für Entwurfsmuster (Nr. 1)
Java-Anfänger-Entwurfsmuster (Factory-Methodenmuster)
Prototypmuster
Erinnerungsmuster
Vermittlermuster
Zusammengesetztes Muster
Beobachtermuster
Builder-Muster
Brückenmuster
Befehlsmuster
Builder-Muster
Strategiemuster
Besuchermuster
Adaptermuster
Proxy-Muster
Strategiemuster
Zusammengesetztes Muster
Singleton-Muster
Ich habe versucht, das Iterator-Muster zu implementieren
Singleton-Muster
Prototypmuster
[Entwurfsmuster] Allgemeine Logik mit der Vorlagenmethode
Fassadenmuster
Dekorationsmuster
Fliegengewichtsmuster
Dekorateur Muster
Vermittlermuster
Fassadenmuster
Besuchermuster