[JAVA] Modèle de conception ~ Itérateur ~

1.Tout d'abord

Voici un résumé du ** modèle d'itérateur ** dans le modèle de conception du GoF.

2. Quel est le modèle Iterator?

3. Exemple de diagramme de classes

Iterator.PNG

4. Exemple de programme

C'est un programme qui place les élèves dans une classe (salle de classe) et affiche les noms des élèves dans l'ordre.

4-1. Interface de l'itérateur

Une interface qui scanne les éléments en séquence.

Iterator.java


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

4-2. Interface agrégée

Une interface qui crée Iterator. Dans l'échantillon, il est appelé «agrégat».

Aggregate.java


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

4-3. Classe d'élèves

Une classe qui est un élément d'un agrégat. Dans l'échantillon, c'est "étudiant".

Student.java


public class Student {

	private String name;

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

	public String getName() {
		return name;
	}
}

4-4. Classe ClassRoom

Une classe qui implémente l'interface définie par Aggregate. Dans l'exemple, il est appelé «salle de classe».

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. Classe ClassRoomIterator

Une classe qui implémente l'interface définie par Iterator.

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. Classe principale

Cette classe effectue le traitement principal.

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. Résultat de l'exécution

Tanaka
Yamada
Suzuki
Sato

5. Avantages

L'avantage du modèle Iterator est qu'il peut être compté séparément de l'implémentation. Les modèles de conception permettent aux classes d'être utilisées en tant que pièces et favorisent la réutilisabilité. Les seules méthodes Iterator utilisées dans la ** classe principale ** de l'exemple de programme sont ** hasNext () et next () **. En d'autres termes, l'implémentation ne dépend pas de la ** classe ClassRoom **, vous n'avez donc pas à vous soucier de la taille du tableau.

  1. GitHub

7. Liste des modèles de conception

8. Référence

Cet article et exemple de programme ont été créés à partir des livres suivants.

C'était très facile à comprendre et j'ai beaucoup appris. Je vous remercie. Les explications détaillées des modèles de conception et des exemples de programmes sont écrites, veuillez donc également consulter les livres.

Recommended Posts

Modèle de conception ~ Itérateur ~
Modèle d'itérateur
Modèle d'itérateur
Modèle de conception ~ Constructeur ~
Modèle de conception ~ Visiteur ~
Modèle de conception ~ Proxy ~
Modèle de conception ~ Stratégie ~
Modèle de conception ~ Singleton ~
Modèle de conception ~ Composite ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
Modèle de conception ~ Commande ~
Modèle de conception ~ Façade ~
Modèle de conception ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de conception ~ Décorateur ~
Modèle de conception ~ Interprète ~
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
Modèle de conception ~ Memento ~
Modèle de conception ~ Adaptateur ~
Modèle de conception ~ Poids mouche ~
Modèle de conception ~ Méthode d'usine ~
Modèle de conception ~ Usine abstraite ~
Résumé du modèle de conception du GoF
Modèle de conception ~ Méthode de modèle ~
Résumé du modèle de conception Java
Modèle de conception ~ Chaîne de responsabilité ~
[Design pattern] Bibliothèque de base Java
Introduction aux modèles de conception (Iterator)
Modèle de conception par la méthode Ruby Template Mémo de modèle
Modèle de conception mâché C #: TemplateMethod
Exemple d'application du modèle de conception (n ° 1)
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Modèle de prototype
Motif de souvenir
Motif médiateur
Motif composite
Modèle d'observateur
Modèle de constructeur
Modèle de pont
Modèle de commande
Modèle de constructeur
Modèle de stratégie
Modèle de visiteur
Modèle d'adaptateur
Modèle de proxy
Modèle de stratégie
Motif composite
Motif singleton
J'ai essayé d'implémenter le modèle Iterator
Motif singleton
Modèle de prototype
[Modèle de conception] Logique commune avec la méthode de modèle
Modèle de façade
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
Motif de façade
Modèle de visiteur