Design Patterns
Padrão CompostoPermite que você componha objetos em estrutura de árvore para representar hierarquias parte-todo.  Com este padrão, os clientes podem tratar objetos individuais ou composições  de objetos de maneira uniforme.
Estrutura Árvore
public abstract classMenuCompostopublicvoid adicionar(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicvoid remover(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicMenuCompostogetFilho(int i)thrownewUnsupportedOperationException();public String getNome()thrownewUnsupportedOperationException();public String getDescricao()thrownewUnsupportedOperationException();publicdoublegetPreco()thrownewUnsupportedOperationException();publicbooleanisVegetariano()thrownewUnsupportedOperationException();publicvoid imprimir()thrownewUnsupportedOperationException();
public class Menu extends MenuComposto {ArrayList<MenuComposto> menuCompostos = newArr.....	String nome;	String descricao;	public Menu(String nome, String descricao) this.nome = nome;this.descricao = descricao;        // Implementação dos métodos do MenuComposto.....	@Overridepublicvoid imprimir() {		System.out.print("\n" + getNome());		System.out.println(" , " + getDescricao());		System.out.println("______________");Iterator<MenuComposto> iterator = menuCompostos.iterator();while(iterator.hasNext()){MenuCompostomenuComposto = iterator.next();menuComposto.imprimir();
MenuCompostoMenuMenuMenu ItemMenu ItemMenu ItemMenu Item
public class MenuItem extends MenuComposto{String nome;String descricao;booleanisVegetariano;doublepreco;publicMenuItem(String nome, String desc, booleanisVeg, doublepreco) this.nome = nome;this.descricao= .................	@Overridepublicvoid imprimir() 		System.out.print("   "  + getNome());If(this.isVegetariano()){			System.out.print(" (V) ");		System.out.println(" , " + getPreco());		System.out.println("- " + getDescricao());
publicclassGarconete {MenuCompostotodosMenus;publicGarconete(MenuCompostomenuCompos) this.todosMenus= menuCompos;publicvoid imprimir()todosMenus.imprimir();
publicclassTestMenuComposto{	public static void main(String[] args) {MenuCompostomenuRod = new Menu("Menu do Rod", "Cafézinho");MenuCompostomenuDouglas = new Menu("Menu do Douglas", "Cafézão");MenuCompostomenuDoBolha = new Menu("Menu do Bolha", "Lixo");MenuCompostomenuDoChina = new Menu("Menu do China", "Ehmmmmmmm....");MenuCompostotodosMenus = new Menu("Todos menus", " uma perfeita combinação .");todosMenus.adicionar(menuRod);todosMenus.adicionar(menuDouglas);todosMenus.adicionar(menuDoBolha);todosMenus.adicionar(menuDoChina);menuRod.adicionar(newMenuItem("Macarrao", "Uma deliciosa macarronada", false, 5.99));menuRod.adicionar(newMenuItem("MacarraoII", "Uma deliciosa macarrona com molho dobro", false, 8.99));menuDouglas.adicionar(newMenuItem("Café", "Maravilhoso", false, 4.33));menuDouglas.adicionar(newMenuItem("CaféII", "MaravilhosoII", false, 5.33));menuDoBolha.adicionar(newMenuItem("Frutas", "Saudaveis", true, 3.38));menuDoBolha.adicionar(newMenuItem("FrutasII", "SaudaveisII", true, 7.38));menuDoChina.adicionar(newMenuItem("Leite Desnatado", "Fresco", false, 3.69));menuDoChina.adicionar(newMenuItem("Leite DesnatadoII", "FrescoII", false, 4.69));Garconetegarconete = newGarconete(todosMenus);garconete.imprimir();
Todos menus ,  uma perfeita combinação .______________Menu do Rod , Cafézinho______________Macarrao , 5.99		- Uma deliciosa macarronadaMacarraoII , 8.99		- Uma deliciosa macarronada com molho em dobroMenu do Douglas , Cafézão______________Café , 4.33		- MaravilhosoCaféII , 5.33			- MaravilhosoIIMenu do Bolha , Lixo______________Frutas (V)  , 3.38		- SaudaveisFrutasII (V)  , 7.38		- SaudaveisIIMenu do China , Ehmmmmmmm....______________Leite Desnatado , 3.69		- FrescoLeite DesnatadoII , 4.69		- FrescoII
 Obrigado !

Padrão Composto

  • 1.
  • 2.
    Padrão CompostoPermite quevocê componha objetos em estrutura de árvore para representar hierarquias parte-todo. Com este padrão, os clientes podem tratar objetos individuais ou composições de objetos de maneira uniforme.
  • 3.
  • 4.
    public abstract classMenuCompostopublicvoidadicionar(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicvoid remover(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicMenuCompostogetFilho(int i)thrownewUnsupportedOperationException();public String getNome()thrownewUnsupportedOperationException();public String getDescricao()thrownewUnsupportedOperationException();publicdoublegetPreco()thrownewUnsupportedOperationException();publicbooleanisVegetariano()thrownewUnsupportedOperationException();publicvoid imprimir()thrownewUnsupportedOperationException();
  • 5.
    public class Menuextends MenuComposto {ArrayList<MenuComposto> menuCompostos = newArr..... String nome; String descricao; public Menu(String nome, String descricao) this.nome = nome;this.descricao = descricao; // Implementação dos métodos do MenuComposto..... @Overridepublicvoid imprimir() { System.out.print("\n" + getNome()); System.out.println(" , " + getDescricao()); System.out.println("______________");Iterator<MenuComposto> iterator = menuCompostos.iterator();while(iterator.hasNext()){MenuCompostomenuComposto = iterator.next();menuComposto.imprimir();
  • 6.
  • 7.
    public class MenuItemextends MenuComposto{String nome;String descricao;booleanisVegetariano;doublepreco;publicMenuItem(String nome, String desc, booleanisVeg, doublepreco) this.nome = nome;this.descricao= ................. @Overridepublicvoid imprimir() System.out.print(" " + getNome());If(this.isVegetariano()){ System.out.print(" (V) "); System.out.println(" , " + getPreco()); System.out.println("- " + getDescricao());
  • 8.
  • 9.
    publicclassTestMenuComposto{ public static voidmain(String[] args) {MenuCompostomenuRod = new Menu("Menu do Rod", "Cafézinho");MenuCompostomenuDouglas = new Menu("Menu do Douglas", "Cafézão");MenuCompostomenuDoBolha = new Menu("Menu do Bolha", "Lixo");MenuCompostomenuDoChina = new Menu("Menu do China", "Ehmmmmmmm....");MenuCompostotodosMenus = new Menu("Todos menus", " uma perfeita combinação .");todosMenus.adicionar(menuRod);todosMenus.adicionar(menuDouglas);todosMenus.adicionar(menuDoBolha);todosMenus.adicionar(menuDoChina);menuRod.adicionar(newMenuItem("Macarrao", "Uma deliciosa macarronada", false, 5.99));menuRod.adicionar(newMenuItem("MacarraoII", "Uma deliciosa macarrona com molho dobro", false, 8.99));menuDouglas.adicionar(newMenuItem("Café", "Maravilhoso", false, 4.33));menuDouglas.adicionar(newMenuItem("CaféII", "MaravilhosoII", false, 5.33));menuDoBolha.adicionar(newMenuItem("Frutas", "Saudaveis", true, 3.38));menuDoBolha.adicionar(newMenuItem("FrutasII", "SaudaveisII", true, 7.38));menuDoChina.adicionar(newMenuItem("Leite Desnatado", "Fresco", false, 3.69));menuDoChina.adicionar(newMenuItem("Leite DesnatadoII", "FrescoII", false, 4.69));Garconetegarconete = newGarconete(todosMenus);garconete.imprimir();
  • 10.
    Todos menus , uma perfeita combinação .______________Menu do Rod , Cafézinho______________Macarrao , 5.99 - Uma deliciosa macarronadaMacarraoII , 8.99 - Uma deliciosa macarronada com molho em dobroMenu do Douglas , Cafézão______________Café , 4.33 - MaravilhosoCaféII , 5.33 - MaravilhosoIIMenu do Bolha , Lixo______________Frutas (V) , 3.38 - SaudaveisFrutasII (V) , 7.38 - SaudaveisIIMenu do China , Ehmmmmmmm....______________Leite Desnatado , 3.69 - FrescoLeite DesnatadoII , 4.69 - FrescoII
  • 11.