Quello che stai guardando nel primo diagramma è come le classi AWT in Java usano il Pattern composito in modo che sono in grado di comporre insieme elementi in un elemento più grande dello stesso tipo. Il secondo diagramma mostra la forma generalizzata del Pattern composito.
Il modello composito
Per comprendere il modello composito, utilizziamo un esempio più concreto per una prospettiva migliore. Innanzitutto, abbiamo una super classe (potrebbe anche essere un'interfaccia) Vehicle per le cose che guidano sulla strada, come automobili, camion, 18 ruote, ecc:
public abstract class Vehicle
{
public void drive(int distance) {
System.out.println("Drove " + distance + ". Vroom vroom!");
}
public abstract int getWeight();
// etc.
}
Ora abbiamo anche una lezione concreta per una macchina:
public class Car extends Vehicle
{
protected int weight;
// ...
@Override
public int getWeight() {
return this.weight;
}
}
Abbiamo anche una classe per un corriere auto , che è un veicolo che può contenere altri veicoli:
public class CarCarrier extends Vehicle
{
protected int weight;
protected Vehicle[] cars;
// ...
@Override
public int getWeight() {
int weight = this.weight;
for(Vehicle car : cars) {
weight += car.getWeight();
}
return weight;
}
}
Come possiamo vedere nel metodo getWeight di CarCarrier , dobbiamo calcolare il peso del corriere come peso più il peso delle vetture che trasporta . Pertanto, il metodo getWeight di CarCarrier chiama il metodo getWeight di ciascun figlio Vehicles nell'array cars . La classe Car corrisponde alla foglia e la classe CarCarrier corrisponde al composito.

La formula sopra riportata, che descrive come dovrebbe funzionare il metodo operation del composito, si traduce fondamentalmente in "per ogni bambino, lo chiameremo ' o ', nei bambini, dobbiamo chiamare il metodo operation su o quando viene chiamato il metodo operation del composito. " Questo corrisponde al modo in cui abbiamo chiamato il metodo getWeight di ognuno dei Vehicles trasportato dal CarCarrier per ottenere il peso totale del CarCarrier .