Skip to content

Instantly share code, notes, and snippets.

Last active Jul 21, 2018
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) {
this.nombre = nombre;
public void addTerritorio(Territorio 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) {
public int getPoblacion() {
Iterator<Territorio> iterator = getChilds().iterator();
int poblacion = 0;
while (iterator.hasNext()) {
poblacion +=;
return poblacion;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment