náhled|UML diagram návrhového vzoru Composite Návrhový vzor Composite představuje řešení, jak uspořádat jednoduché objekty a z nich složené (kompozitní) objekty. Snahou vzoru je, aby k oběma typům objektů (jednoduchým a složeným) bylo možné přistoupit jednotným způsobem.

Implementace composite v jazyce Java V ukázce je stádo ve kterém jsou objekty psů a krav. Oba umí vytvořit nějaký zvuk. Pomocí tohoto návrhového vzoru můžeme udělat velké stádo které obsahuje více malých stád a nechat udělat daný zvuk všech zvířat které jsou ve velkém stádu. import java.util.ArrayList; import java.util.Iterator;

public class Main {

public static void main(String[] args) { Dog dog1 = new Dog(); Cow cow1 = new Cow(); AnimalGang dogGang = new AnimalGang(); //vytvoření stáda psů dogGang.add(dog1); dogGang.add(dog1); dogGang.add(dog1); AnimalGang cowGang = new AnimalGang(); //vytvoření stáda krav cowGang.add(cow1); cowGang.add(cow1); AnimalGang allAnimalsGang = new AnimalGang(); //vytvoření stáda všech zvířat allAnimalsGang.add(dogGang); //přidání stáda psů do celkového stáda zvířat allAnimalsGang.add(cowGang); //přidání stáda krav do celkového stáda zvířat

allAnimalsGang.makeSound(); //celkové stádo zvířat udělá nějaký zvuk

/** Společný interface pro zvířata, která umí udělat nějaký zvuk */ interface Animal { public void makeSound(); //abstraktní metoda makeSound() představuje že zvíře dokáže udělat nějaký zvuk např. pes štěká, kráva bučí, kočka mňouká atd.. } class Dog implements Animal{ /** konkrétní implementace abstraktní metody makeSound() u psa */ public void makeSound() { System.out.println("HAF HAF !!");

class Cow implements Animal{ /** konkrétní implementace abstraktní metody makeSound() u krávy */ public void makeSound() { System.out.println("Búúúúúúú !!");

/** Třída pro komponování objektů typu Animal */ class AnimalGang implements Animal { // ArrayList pro uchování zvířat ve stádu private ArrayList<Animal> childAnimals = new ArrayList<Animal>();

public void makeSound() { Iterator<Animal> it = childAnimals.iterator(); while(it.hasNext()){ Animal animal = it.next(); animal.makeSound();

public void add(Animal _animal){ this.childAnimals.add(_animal);

public void remove(Animal _animal){ this.childAnimals.remove(_animal);

Související články Návrhové vzory Objektově orientované programování Programování

Externí odkazy

Návrhový vzor composite

Kategorie:Návrhové vzory