padr ões de projeto detalhados factory method , abstract factory
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/1.jpg)
Padrões de projeto detalhados
Factory Method, Abstract Factory
Nazareno Andrade
![Page 2: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/2.jpg)
Padrões de projeto (GoF)
De criação Estruturais De comportamento
![Page 3: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/3.jpg)
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?
![Page 4: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/4.jpg)
![Page 5: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/5.jpg)
Problema: queremos agora um currículo resumido que tem as mesmas funcionalidades do original, mas uma página de conteúdo diferente
![Page 6: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/6.jpg)
6
Factory Method
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
![Page 7: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/7.jpg)
Colaborações
![Page 8: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/8.jpg)
Problema-exemplo 2
Serviço de envio de pedidos
Inicialmente enviamos sempre por email
Queremos agora enviar via REST para fornecedores maiores
![Page 9: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/9.jpg)
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
![Page 10: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/10.jpg)
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.
![Page 11: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/11.jpg)
UML
![Page 12: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/12.jpg)
12Factory Method, Abstract Factory
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
![Page 13: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/13.jpg)
13Factory 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
![Page 14: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/14.jpg)
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
![Page 15: Padr ões de projeto detalhados Factory Method , Abstract Factory](https://reader036.vdocuments.pub/reader036/viewer/2022072016/56813328550346895d9a12c6/html5/thumbnails/15.jpg)
Dúvidas?