Discussão sobre Padrões de Projeto

  1. Controle de Atendimento de Comandas
    Um garçon anota os pedidos das mesas e entrega ao balcão. O pessoal do balcão é responsável
    pelo atendimento da bebida. A comida é responsabilidade da cozinha. Quando o balcão recebe a
    comanda, repassa imediatamente à cozinha. O restaurante tem um esquema de “Pedido Casado”
    (Combo). Cada Combo é composto de bebida, prato principal, salada e sobremesa. Quando a
    cozinha termina sua parte do Combo (prato principal, salada e sobremesa) é avisado o balcão, que
    adiciona a bebida e avisa o garçon responsável da comanda. Os Combos estão representados na
    tabela abaixo.
    Combo Bebida Prato Principal Salada Sobremesa
    1 Coca Feijão Couve Salada de frutas
    2 Suco Macarrão Agrião Mousse
    3 Coca Risoto Tomate Mousse
    4 Água Macarrão Tomate Gelatina
    Com base nessas informações, desenvolva um modelo de classes aplicando os padrões Abstract
    Factory, Singleton e Listener. Crie uma classe de sistema para realizar algumas simulações.

Esse foi o exercício proposto pelo professor, não quero que resolvam pra mim nem nada, é um exercício de estudo e quero que role sugestões e uma discussão sobre o uml desse ‘sistema’.

Como ele sugeriu o uso dos 3 padrões de projeto: Observer, Abstract Factory e Singleton, eu modelei mais ou menos assim.

O Padrão Abstract Factory eu apliquei assim:

Fiz uma interface ComboFactory que cria o Combo1, Combo2 e etc…

O produto da factory seria, salada, sobremesa, prato principal e bebida.

Classes resumidas:

[code]public interface ComboFactory {
Bebida getBebida();
}

AbsProduct:

public interface Bebida {

String nomeBebida();

}

a classe combo1 por exemplo, ficaria assim então:

public class Combo1 implements ComboFactory {

public Bebida getBebida() {
    Coca bebida = new Coca();
    return bebida;
}

}[/code]

Aí aplicaria o padrão observer para a cozinha avisar o balcao quando tievsse pronto e o balcao avisar o garçom.

alguem sabe me explicar como ficaria mais ou menos essa parte?

Outra coisa, alguém tem idéia de como seria o método pro garçom entregar pro balcão?

Valeu :smiley: