InstitutoFederaldeEducação,CiênciaeTecnologiadaParaíba–campusCajazeiras 
Curso:AnáliseeDesenvolvimentodeSistemas 
Professo...
Factory Method
“Definir uma interface para criar um objeto, mas deixar que subclasses decidam que classe instanciar. FactoryMethodpermite...
Intenção 
•Definirumainterfaceparacriaçãodeobjetos,permitindoasubclassedecidirqualdasimplementaçõesdeveserinstanciada; 
•F...
Intenção 
•Épossívelcriarumobjetosemterconhecimentoalgumdasuaclasseconcreta? 
•Esseconhecimentodeveestaremalgumapartedosis...
Intenção 
•Separaassim: 
•Uma"familia"declassesdotadasdamesmainterface("produtos");e 
•Umaclasse("fabrica")quepossuiumméto...
Motivação 
•Construirobjetosindividuaissemqueaconstruçãorequeiraconhecimentosdasclassesespecíficasqueestãosendoinstanciada...
O Problema 
•Framework específico para uma aplicação que manipula documentos multimídia; 
•É possível criar um framework m...
A Solução 
•Classesabstratasimplementamasfunçõescomunsatodotipodedocumento; 
•Métodofábricaédefinidonasuperclasseeimplemen...
Estrutura
A Lógica
Participantes 
•Product 
•DefineainterfacedosobjetosqueoFactoryMethodcria. 
•ConcreteProduct 
•Classesquevãoimplementarain...
Participantes 
•Creator 
•DeclaraoFactoryMethod(métododecriação)oqualretornaumobjetodotipoProduct(Produto).AFábricatambémp...
Aplicabilidade 
•UseFactoryMethodquando: 
•Umaclassenãopodeanteciparouconheceraclassedosobjetosquedevecriar; 
•Umaclassequ...
Aplicabilidade 
Issoécomumnumaaplicaçãobemdesenhadaondevariáveissãoestruturadascombaseeminterfaces.Assim, váriostiposdeob...
Colaborações 
•Acriaçãodosobjetoséderesponsabilidadedaclassedeproduçãoquedeveretornarumobjetodeumaclasseapropriada; 
•AFáb...
Consequências 
•MelhorExtensibilidade 
•Eliminaanecessidadedemontarumcódigoemfunçãoaumaclasseespecífica.Nonossoexemplodeap...
Desvantagens 
•Eventualmente,clientespodemterqueespecializaraclasseFabricaapenasparacriarumobjetoProdutoConcretoparticular;
Padrões Relacionados 
•Abstract Factory 
•TemplateMethod 
•Prototype
FactoryMethod-Exemplos
Exemplo 01 
SuponhaquenóstemosquedesenvolverumsistemadeconsultadeinformaçõesdeveículosCelta,palio,golevectra. Informamosq...
Diagrama
Solução
Solução
Solução
Solução
Solução
Exemplo 02 
Imagineaimplementaçãodeumsistemaparacontroledeumapizzaria.Apizzariadispõemdealgunstiposdepizza(pizzagregademo...
Exemplo 02 
Cliente tem que preparar Pizza
Exemplo 02 
Oquefazerparasuprimirumapizzadaclasseprincipalouadicionarnovaspizzas? 
Oqueacontecesehouverváriospontosdeins...
Exemplo 02
Exemplo 02 
Solução 
ENCAPSULARacriaçãodasPizzasemoutroobjetoquesabecomocriarinstanciarobjetosdassubclassespizzas. 
Des...
Exemplo 02
Solução
Solução
Solução
Solução
Solução
Solução
Exemplo 03 
Imagineaseguintesituação: 
Desenvolverumsistemaderadarqueexecutaasseguintesoperações:enviaumsinalparacentral...
Diagrama
Solução
Solução
Solução
Solução
Solução
Atividade 
Imaginequevocêfoicontratadoparadesenvolverjogodeestratégia.Nestejogonóstemostrêsinimigosozumbi, FeiticeiroeoTr...
Diagrama
Solução
Solução
Solução
Solução
Solução
Patterns: Factory Method
Patterns: Factory Method
Próximos SlideShares
Carregando em…5
×

Patterns: Factory Method

364 visualizações

Publicada em

Padrão de Projeto Factory Method...

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
364
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Patterns: Factory Method

  1. 1. InstitutoFederaldeEducação,CiênciaeTecnologiadaParaíba–campusCajazeiras Curso:AnáliseeDesenvolvimentodeSistemas Professor:Rodrigo Disciplina:PadrõesdeProjeto Fátima Ferreira Sérgio DinizPadrão de Criação de ObjetosFactoryMethod
  2. 2. Factory Method
  3. 3. “Definir uma interface para criar um objeto, mas deixar que subclasses decidam que classe instanciar. FactoryMethodpermite que uma classe delegue a responsabilidade de instanciamento às subclasses.” [GoF]
  4. 4. Intenção •Definirumainterfaceparacriaçãodeobjetos,permitindoasubclassedecidirqualdasimplementaçõesdeveserinstanciada; •FactoryMethodfazumaclassedelegarainstanciaçãoasubclasses; •Retornarumainstância,dentremuitaspossíveisclasses, dependendodosdadosprovidosaele. •Tambémconhecidocomovirtualconstrutor;
  5. 5. Intenção •Épossívelcriarumobjetosemterconhecimentoalgumdasuaclasseconcreta? •Esseconhecimentodeveestaremalgumapartedosistema,masnãoprecisaestarnecessariamentenocliente. •FactoryMethoddefineumainterfacecomumparacriarobjetos; •Oobjetoespecíficoédeterminadonasdiferentesimplementaçõesdessainterface; •FactoryMethodsãométodos(podemserestáticos)queretornamumainstânciadeumaclasse;
  6. 6. Intenção •Separaassim: •Uma"familia"declassesdotadasdamesmainterface("produtos");e •Umaclasse("fabrica")quepossuiummétodoespecial(ofactorymethod)quecriataisobjetos;
  7. 7. Motivação •Construirobjetosindividuaissemqueaconstruçãorequeiraconhecimentosdasclassesespecíficasqueestãosendoinstanciadas; •Criarumaclassedeabstraçãoquedecidequaldasopçõesdeclasseretornarsemqueaclasseretornadasejadeprévioconhecimento.
  8. 8. O Problema •Framework específico para uma aplicação que manipula documentos multimídia; •É possível criar um framework mais genérico, para qualquer aplicação de manipulação de documentos?
  9. 9. A Solução •Classesabstratasimplementamasfunçõescomunsatodotipodedocumento; •Métodofábricaédefinidonasuperclasseeimplementadonasubclasse.
  10. 10. Estrutura
  11. 11. A Lógica
  12. 12. Participantes •Product •DefineainterfacedosobjetosqueoFactoryMethodcria. •ConcreteProduct •Classesquevãoimplementarainterfacedefinidaemproduto. SãoasdiferentesClassesquepodemserinstanciadas;
  13. 13. Participantes •Creator •DeclaraoFactoryMethod(métododecriação)oqualretornaumobjetodotipoProduct(Produto).AFábricatambémpodedefinirumaimplementaçãobásicadoFactoryMethod,queretorneumobjetoProdutoCreatebásico. •ConcreteCreator •SobrescreveométododeproduçãopararetornarumobjetodaclasseConcreteProduct;
  14. 14. Aplicabilidade •UseFactoryMethodquando: •Umaclassenãopodeanteciparouconheceraclassedosobjetosquedevecriar; •Umaclassequersuassubclassesparaespecificarosobjetosquecria; •VocêprecisacriarumobjetomasvocênãoquerusaradiretivaNEWnaclassecliente;
  15. 15. Aplicabilidade Issoécomumnumaaplicaçãobemdesenhadaondevariáveissãoestruturadascombaseeminterfaces.Assim, váriostiposdeobjetosdiferentespodemserassociadasaessavariável.
  16. 16. Colaborações •Acriaçãodosobjetoséderesponsabilidadedaclassedeproduçãoquedeveretornarumobjetodeumaclasseapropriada; •AFábricadependedassuassubclassesparadefinirométodofábricademaneiraqueretorneumainstânciadaProdutoConcreto;
  17. 17. Consequências •MelhorExtensibilidade •Eliminaanecessidadedemontarumcódigoemfunçãoaumaclasseespecífica.Nonossoexemplodeaplicação,ocódigosólidacomumainterfacechamadaProduct. •Fornecerganchosparasubclasses •Essepadrãodeprojetodámaiorflexibilidadeparaasclasses, poiscriarumobjetoemumaclassequeutilizaoFactoryMethodémelhorquefazê-loemseparado,funcionando, assim,comoumaconexãoparaqueumadassubclassesforneçamumaversãoestendidadeumobjeto.
  18. 18. Desvantagens •Eventualmente,clientespodemterqueespecializaraclasseFabricaapenasparacriarumobjetoProdutoConcretoparticular;
  19. 19. Padrões Relacionados •Abstract Factory •TemplateMethod •Prototype
  20. 20. FactoryMethod-Exemplos
  21. 21. Exemplo 01 SuponhaquenóstemosquedesenvolverumsistemadeconsultadeinformaçõesdeveículosCelta,palio,golevectra. Informamosqualcarroqueremosconsultarerecebemosasinformaçõessobreestescarros.Masnãoqueremosqueasclassesconcretasfiquemmuitoacopladasanossaclassecliente.
  22. 22. Diagrama
  23. 23. Solução
  24. 24. Solução
  25. 25. Solução
  26. 26. Solução
  27. 27. Solução
  28. 28. Exemplo 02 Imagineaimplementaçãodeumsistemaparacontroledeumapizzaria.Apizzariadispõemdealgunstiposdepizza(pizzagregademoluscoestiloCajazeiras,pizzaportuguesaestiloSousa...),bemcomoosserviçosresponsáveisparafabricarumapizza(prepararapizza,assar,cortareempacotar); Problema... Aspizzasestãosendoinstanciadasnaclassecliente. Quandoclientequerprepararumanovapizza,elemesmoofaz.
  29. 29. Exemplo 02 Cliente tem que preparar Pizza
  30. 30. Exemplo 02 Oquefazerparasuprimirumapizzadaclasseprincipalouadicionarnovaspizzas? Oqueacontecesehouverváriospontosdeinstanciaçãodestaspizzas? ProblemadeACOPLAMENTO ClassesclientesdevemconhecerassubclassesdePizza. Mudançasnahierarquia(nonomedasclassesporexemplo) provocammudançasemtodosospontosdeinstanciaçãodaspizzas. Podehavermuitospontosdependendodosistema.
  31. 31. Exemplo 02
  32. 32. Exemplo 02 Solução ENCAPSULARacriaçãodasPizzasemoutroobjetoquesabecomocriarinstanciarobjetosdassubclassespizzas. Dessamaneiratodocódigoqueforinstanciarpizzas,utilizaaclassefábrica(pizzaria)paracriarestesobjetos. Baixoacoplamento,jáquemudançasnasclassessãoabsorvidaspelafábrica; SomentefábricaconheceasPizzasconcretas;
  33. 33. Exemplo 02
  34. 34. Solução
  35. 35. Solução
  36. 36. Solução
  37. 37. Solução
  38. 38. Solução
  39. 39. Solução
  40. 40. Exemplo 03 Imagineaseguintesituação: Desenvolverumsistemaderadarqueexecutaasseguintesoperações:enviaumsinalparacentraldecontrole,corrigirotempoverificaçãoeprocessarosinalcapturado.Sabendoqueoterrenoexercegrandeinfluêncianomododeoperaçãoeprocessamentodoradar.Ouseja,emterrenosplanos,aquáticosemontanhososoradarvaiapresentarcomportamentosdistintos.
  41. 41. Diagrama
  42. 42. Solução
  43. 43. Solução
  44. 44. Solução
  45. 45. Solução
  46. 46. Solução
  47. 47. Atividade Imaginequevocêfoicontratadoparadesenvolverjogodeestratégia.Nestejogonóstemostrêsinimigosozumbi, FeiticeiroeoTrollqueataca,virapraesquerda,virapradireita,andaprafrenteeparatrás. Imaginequetemosqueinstanciaressesobjetosnanossaaplicaçãodemaneiraqueocódigoclientenãofiquemuitoacopladoasclassesconcretas.
  48. 48. Diagrama
  49. 49. Solução
  50. 50. Solução
  51. 51. Solução
  52. 52. Solução
  53. 53. Solução

×