Skip to content

Instantly share code, notes, and snippets.

@PabloVillacanhas
Last active Jul 21, 2018
Embed
What would you like to do?
//Este sería nuestro Component, una interfaz con el método getPoblación()
public interface Territorio {
int getPoblacion();
}
//Las clases Pais, Continente, etc (salvo Ciudad), heredarán de esta clase abstracta
public abstract class Composite implements Territorio {
String nombre;
List<Territorio> territorios = new ArrayList<Territorio>();
public Composite(String nombre) {
super();
this.nombre = nombre;
}
public void addTerritorio(Territorio territorio) {
territorios.add(territorio);
}
public List<Territorio> getChilds() {
return territorios;
}
public void remove(Territorio territorio) {
territorios.removeIf(t -> t.equals(territorio));
}
}
public class Pais extends Composite {
public Pais(String nombre) {
super(nombre);
};
@Override
public int getPoblacion() {
Iterator<Territorio> iterator = getChilds().iterator();
int poblacion = 0;
while (iterator.hasNext()) {
poblacion += iterator.next().getPoblacion();
}
return poblacion;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment