Composite

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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. +more 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. +moreadd(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ř. +more 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 childAnimals = new ArrayList;

public void makeSound { Iterator it = childAnimals. iterator; while(it. +morehasNext){ Animal animal = it. next; animal. makeSound; } } public void add(Animal _animal){ this. childAnimals. add(_animal); } public void remove(Animal _animal){ this. childAnimals. remove(_animal); } }.

Externí odkazy

[url=https://web.archive.org/web/20090601064830/http://objekty.vse.cz/Objekty/Vzory-Composite]Návrhový vzor composite[/url]

Kategorie:Návrhové vzory

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top