150 likes | 282 Views
Padr ões de projeto detalhados Factory Method , Abstract Factory. Nazareno Andrade. Padr ões de projeto ( GoF ) De criação Estruturais De comportamento. Problema-exemplo. Sistema para criar e exibir curr ículo Um currículo tem página de rosto, página de conteúdo e página de encerramento
E N D
Padrões de projeto detalhadosFactoryMethod, Abstract Factory Nazareno Andrade
Padrões de projeto (GoF) • De criação • Estruturais • De comportamento
Problema-exemplo • Sistema para criar e exibir currículo • Um currículo tem página de rosto, página de conteúdo e página de encerramento • Design?
Problema: queremos agora um currículo resumido que tem as mesmas funcionalidades do original,mas uma página de conteúdo diferente
FactoryMethod • Intenção • Definir uma interface para criar objetos, mas deixar as subclasses decidirem que classe instanciar. Permite adiar a instanciação para subclasses. • Aplicabilidade • classe não conhece antecipadamente a classe dos objetos que deve criar • classe quer que suas subclasses especifiquem os objetos que criam
Problema-exemplo 2 • Serviço de envio de pedidos • Inicialmente enviamos sempre por email • Queremos agora enviar via REST para fornecedores maiores
Problema • Como garantir que, em um contexto, mensagem e serviço de mensagem serão da mesma “Família”? • Isso acontece por exemplo no look-and-feel de interfaces gráficas
Solução: Abstract Factory • Solução: Fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especificar classes concretas.
Aplicabilidade • um sistema deve ser independente de como seus produtos são criados, compostos ou representados • um sistema deve ser configurado como um produto de uma família de múltiplos produtos • uma família de objetos-produto for projetada para ser usada em conjunto e você necessita garantir esta restrição • você quer fornecer uma biblioteca de classes de produtos e quer revelar somente suas interfaces, não suas implementações Factory Method, Abstract Factory
Conseqüências • isolamento das classes concretas • torna fácil a troca de famílias de produtos • promove a harmonia entre produtos • é difícil, porém, suportar novos tipos de produtos Factory Method, Abstract Factory
Usos conhecidos • Família de classes necessária para lidar com banco de dados • Família de classes necessária para lidar com placa de rede • Família de classes para lidar com look-and-feel das interfaces