Confusion sur le design pattern composite
Bonjour,
Je suis entrain de voir le design pattern Composite.J'ai compris le principe et j'ai suivi un exemple d'un semi remorque composé d'un tracteur et d'une remorque, qui ont un poids séparé mais également un poids camion entier. Un tracteur routier doit également pourvoir rouler sans remorque.
Pour la classe composite j'ai trouvé deux méthodes que j'ai vraiments pas compris getEnfant() et getPoid():
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
public class CamionComposite implements Composant {
private Collection children;
public CamionComposite() {
children = new ArrayList();
}
public void add(Composant composant){
children.add(composant);
}
public void remove(Composant composant){
children.remove(composant);
}
public Iterator getChildren() {
return children.iterator();
}
@Override
public int getPoids() {
int result = 0;
for (Iterator i = children.iterator(); i.hasNext(); ) {
Object objet = i.next();
Composant composant = (Composant)objet;
result += composant.getPoids();
}
return result;
}
} |
J'ai fais la méthode getPoids avec ma propre manière et sa fonctionne mais j'ai vu que de nombreuse code sources utilise Iterator j'aimerais comprendre le principe
voila mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package CompositeCamion;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CamionComposite extends Composant {
public ArrayList<Composant> enfants = new ArrayList<Composant>();
public CamionComposite()
{
}
public void ajouter(Composant composant)
{
enfants.add(composant);
}
public void supprimer(Composant composant)
{
enfants.remove(composant);
}
@Override
public int getPoids() {
int resultat=0;
for(Composant composant:enfants)
{
resultat += composant.getPoids();
}
return resultat;
}
public Iterator getEnfant()
{
return enfants.iterator();
}
} |
Merci