SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
Design Patterns creational
padrões de criação fornecer vários mecanismos de criação de objetos, o que aumenta
a flexibilidade e reutilização de código existente.
Factory
Method
Fornece uma interface para criar objetos em uma superclasse, mas permite que
subclasses de alterar o tipo de objetos que serão criados.
Abstract
Factory
Permite produzir famílias de objetos relacionados sem especificar suas classes
concretas.
69 padrões de criação design
Construtor
Permite construir objectos complexos passo a passo. O padrão permite produzir
diferentes tipos e representações de um objeto usando o mesmo código de
construção.
Protótipo
Permite copiar objetos existentes sem fazer o seu código dependente de suas
classes.
coisa única
Permite garantir que uma classe tem apenas uma instância, ao fornecer um ponto de
acesso global a esta instância.
70 padrões de criação design
MÉTODO DE FÁBRICA
Também conhecido como: Construtor Virtual
Factory Method é um padrão de projeto criacional que fornece uma interface paraFactory Method é um padrão de projeto criacional que fornece uma interface para
criar objetos em uma superclasse, mas permite que subclasses de alterar o tipo
de objetos que serão criados.
71 Criacionais Design Patterns / método de fábrica
Problema
Imagine que você está criando um aplicativo de gerenciamento de logística. A primeira
versão do seu aplicativo só pode lidar com o transporte por caminhões, por isso a maior
parte do seu código vive no interior do
Caminhão classe.Caminhão classe.
Depois de um tempo, a sua aplicação torna-se muito popular. Cada dia você receber
dezenas de pedidos de empresas de transporte marítimo para incorporar logística mar
no aplicativo.
Adicionando uma nova classe para o programa não é tão simples se o resto do código
já está acoplado a classes existentes.
Grande notícia, certo? Mas como sobre o código? Actualmente, a maioria do seu código
é acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações em
toda a base de código. Além disso, se mais tarde você decidir adicionar outro tipo de
transporte para o aplicativo, você provavelmente terá que fazer todas essas mudanças
novamente.
•
72 Criacionais Design Patterns / método de fábrica
Como resultado, você vai acabar com código bastante desagradável, cheio de condicionais
que mudar o comportamento do aplicativo, dependendo da classe de objetos de transporte.
Solução
O padrão Factory Method sugere que você substituir chamadas construção do objeto direto
(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se
preocupe: os objetos ainda são criados através da Novo operador, mas ele está sendopreocupe: os objetos ainda são criados através da Novo operador, mas ele está sendopreocupe: os objetos ainda são criados através da Novo operador, mas ele está sendo
chamado de dentro do método de fábrica. Objetos retornados por um método de fábrica são
muitas vezes referidos como “produtos”.
Subclasses pode alterar a classe de objetos que estão sendo devolvidos pela
método de fábrica.
À primeira vista, essa mudança pode parecer inútil: que acabou de se mudar a chamada
do construtor de uma parte do programa para outro. No entanto, considere o seguinte:
agora você pode substituir o método de fábrica em uma subclasse e alterar a classe de
produtos que está sendo criado pelo método.
•
73 Criacionais Design Patterns / método de fábrica
Há uma ligeira limitação porém: subclasses pode retornar diferentes tipos de
produtos se estes produtos têm uma classe base comum ou interface. Além disso,
o método de fábrica na classe base deveria ter seu tipo de retorno declarado
como esta interface.
Todos os produtos devem seguir a mesma interface.
Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,
que declara um método chamado entregar. Cada classe implementa este método deque declara um método chamado entregar. Cada classe implementa este método deque declara um método chamado entregar. Cada classe implementa este método de
forma diferente: caminhões entregar a carga por terra, navios entregar a carga
por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões,por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões,por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões,
enquanto o método de fábrica na SeaLogisticsenquanto o método de fábrica na SeaLogistics
classe retorna navios.
O código que utiliza o método de fábrica (muitas vezes chamado de clienteO código que utiliza o método de fábrica (muitas vezes chamado de cliente
O código) não vê uma diferença entre os produtos reais retornados por
várias subclasses. O cliente trata todos os produtos como abstrato Transporte.várias subclasses. O cliente trata todos os produtos como abstrato Transporte.
74 Criacionais Design Patterns / método de fábrica
Enquanto todas as classes de produtos implementar uma interface comum, você pode passar
seus objetos para o código do cliente sem quebrá-lo.
O cliente sabe que todos os objetos de transporte devem ter o entregar método,O cliente sabe que todos os objetos de transporte devem ter o entregar método,O cliente sabe que todos os objetos de transporte devem ter o entregar método,
mas exatamente como ele funciona não é importante para o cliente.
Estrutura•
75 Criacionais Design Patterns / método de fábrica
1. A produtos declara a interface, que é comum a todos1. A produtos declara a interface, que é comum a todos1. A produtos declara a interface, que é comum a todos
objetos que podem ser produzidos pelo criador e suas subclasses.
2. produtos de concreto são diferentes implementações da produ-2. produtos de concreto são diferentes implementações da produ-2. produtos de concreto são diferentes implementações da produ-
interface de UCT.
3. A O Criador classe declara o método de fábrica que retorna3. A O Criador classe declara o método de fábrica que retorna3. A O Criador classe declara o método de fábrica que retorna
novos objetos produtos. É importante que o tipo de retorno desse método coincide
com a interface do produto.
Você pode declarar o método de fábrica como abstrata para forçar todas as subclasses
para implementar as suas próprias versões do método. Como alternativa, o método de
fábrica base pode retornar algum tipo de produto padrão.
Note, apesar do seu nome, a criação do produto é não a responsabilidade primária doNote, apesar do seu nome, a criação do produto é não a responsabilidade primária doNote, apesar do seu nome, a criação do produto é não a responsabilidade primária do
criador. Normalmente, a classe criador já tem alguma lógica do núcleo de negócios
relacionados aos produtos. O método de fábrica contribui para dissociar essa lógica das
classes de produtos concretos. Aqui está uma analogia: uma grande empresa de
desenvolvimento de software pode ter um departamento de formação para
programadores. No entanto, a função principal da empresa como um todo ainda está
escrevendo código, não produzindo programadores.
4. Criadores de concreto substituir o método fábrica de base para que ele4. Criadores de concreto substituir o método fábrica de base para que ele4. Criadores de concreto substituir o método fábrica de base para que ele
retorna um tipo diferente de produto.
76 Criacionais Design Patterns / método de fábrica

Contenu connexe

Tendances

Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIVinícius Thiengo
 
PhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomPhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomVinícius Thiengo
 
ViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaVinícius Thiengo
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOdanielfc
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixCris Fidelix
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - KotlinAndré Justi
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveJulian Cesar
 
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...Juliana Chahoud
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)André Justi
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 

Tendances (20)

Aula 2
Aula 2Aula 2
Aula 2
 
Java VS Kotlin
Java VS KotlinJava VS Kotlin
Java VS Kotlin
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
PhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomPhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de Zoom
 
ViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de Arquitetura
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãO
 
Eclipse uml
Eclipse umlEclipse uml
Eclipse uml
 
Grails
GrailsGrails
Grails
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane Fidelix
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - Kotlin
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
 
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...
[Cocoaheads Conference:2018] Além de prints e breakpoints: truques para um De...
 
Grails
GrailsGrails
Grails
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)
 
Intro à Graphql
Intro à GraphqlIntro à Graphql
Intro à Graphql
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Maven na prática
Maven na práticaMaven na prática
Maven na prática
 

Similaire à Padroes de Projetos e aplicações- parte 01

Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02Walney Negreiros
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosFabio Kon
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: AdapterMessias Batista
 
Definição de processos para AS Brasil utilizando Rational Method Composer
Definição de processos para AS Brasil utilizando Rational Method ComposerDefinição de processos para AS Brasil utilizando Rational Method Composer
Definição de processos para AS Brasil utilizando Rational Method ComposerWebcasts developerWorks Brasil
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosCloves da Rocha
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 

Similaire à Padroes de Projetos e aplicações- parte 01 (20)

Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02Padroes de Projetos e aplicações- parte 02
Padroes de Projetos e aplicações- parte 02
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
padrao de projeto1
padrao de projeto1padrao de projeto1
padrao de projeto1
 
Aula1
Aula1Aula1
Aula1
 
Refactoring - Design no Código
Refactoring - Design no CódigoRefactoring - Design no Código
Refactoring - Design no Código
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 
Definição de processos para AS Brasil utilizando Rational Method Composer
Definição de processos para AS Brasil utilizando Rational Method ComposerDefinição de processos para AS Brasil utilizando Rational Method Composer
Definição de processos para AS Brasil utilizando Rational Method Composer
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
Tutorial Java: Interface
Tutorial Java: InterfaceTutorial Java: Interface
Tutorial Java: Interface
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 

Plus de Walney Negreiros (9)

padrao de projeto3
padrao de projeto3padrao de projeto3
padrao de projeto3
 
padrao de projeto2
padrao de projeto2padrao de projeto2
padrao de projeto2
 
padrao de projeto0
padrao de projeto0padrao de projeto0
padrao de projeto0
 
Singleton varianca
Singleton variancaSingleton varianca
Singleton varianca
 
Pleonasmo
PleonasmoPleonasmo
Pleonasmo
 
Anafora
AnaforaAnafora
Anafora
 
Ebep alunos-apresenta~çao
Ebep alunos-apresenta~çaoEbep alunos-apresenta~çao
Ebep alunos-apresenta~çao
 
Problemas de hardware e software
Problemas de hardware e softwareProblemas de hardware e software
Problemas de hardware e software
 
INCAS
INCAS INCAS
INCAS
 

Dernier

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Dernier (9)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Padroes de Projetos e aplicações- parte 01

  • 1. Design Patterns creational padrões de criação fornecer vários mecanismos de criação de objetos, o que aumenta a flexibilidade e reutilização de código existente. Factory Method Fornece uma interface para criar objetos em uma superclasse, mas permite que subclasses de alterar o tipo de objetos que serão criados. Abstract Factory Permite produzir famílias de objetos relacionados sem especificar suas classes concretas. 69 padrões de criação design
  • 2. Construtor Permite construir objectos complexos passo a passo. O padrão permite produzir diferentes tipos e representações de um objeto usando o mesmo código de construção. Protótipo Permite copiar objetos existentes sem fazer o seu código dependente de suas classes. coisa única Permite garantir que uma classe tem apenas uma instância, ao fornecer um ponto de acesso global a esta instância. 70 padrões de criação design
  • 3. MÉTODO DE FÁBRICA Também conhecido como: Construtor Virtual Factory Method é um padrão de projeto criacional que fornece uma interface paraFactory Method é um padrão de projeto criacional que fornece uma interface para criar objetos em uma superclasse, mas permite que subclasses de alterar o tipo de objetos que serão criados. 71 Criacionais Design Patterns / método de fábrica
  • 4. Problema Imagine que você está criando um aplicativo de gerenciamento de logística. A primeira versão do seu aplicativo só pode lidar com o transporte por caminhões, por isso a maior parte do seu código vive no interior do Caminhão classe.Caminhão classe. Depois de um tempo, a sua aplicação torna-se muito popular. Cada dia você receber dezenas de pedidos de empresas de transporte marítimo para incorporar logística mar no aplicativo. Adicionando uma nova classe para o programa não é tão simples se o resto do código já está acoplado a classes existentes. Grande notícia, certo? Mas como sobre o código? Actualmente, a maioria do seu código é acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações emé acoplado ao Caminhão classe. adicionando navios no aplicativo exigiria fazer alterações em toda a base de código. Além disso, se mais tarde você decidir adicionar outro tipo de transporte para o aplicativo, você provavelmente terá que fazer todas essas mudanças novamente. • 72 Criacionais Design Patterns / método de fábrica
  • 5. Como resultado, você vai acabar com código bastante desagradável, cheio de condicionais que mudar o comportamento do aplicativo, dependendo da classe de objetos de transporte. Solução O padrão Factory Method sugere que você substituir chamadas construção do objeto direto (usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se(usando o Novo operador) com chamadas para um especial fábrica método. Não se preocupe: os objetos ainda são criados através da Novo operador, mas ele está sendopreocupe: os objetos ainda são criados através da Novo operador, mas ele está sendopreocupe: os objetos ainda são criados através da Novo operador, mas ele está sendo chamado de dentro do método de fábrica. Objetos retornados por um método de fábrica são muitas vezes referidos como “produtos”. Subclasses pode alterar a classe de objetos que estão sendo devolvidos pela método de fábrica. À primeira vista, essa mudança pode parecer inútil: que acabou de se mudar a chamada do construtor de uma parte do programa para outro. No entanto, considere o seguinte: agora você pode substituir o método de fábrica em uma subclasse e alterar a classe de produtos que está sendo criado pelo método. • 73 Criacionais Design Patterns / método de fábrica
  • 6. Há uma ligeira limitação porém: subclasses pode retornar diferentes tipos de produtos se estes produtos têm uma classe base comum ou interface. Além disso, o método de fábrica na classe base deveria ter seu tipo de retorno declarado como esta interface. Todos os produtos devem seguir a mesma interface. Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface,Por exemplo, tanto Caminhão e Navio classes devem implementar o Transporte interface, que declara um método chamado entregar. Cada classe implementa este método deque declara um método chamado entregar. Cada classe implementa este método deque declara um método chamado entregar. Cada classe implementa este método de forma diferente: caminhões entregar a carga por terra, navios entregar a carga por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões,por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões,por mar. O método de fábrica na RoadLogistics classe retorna objetos de caminhões, enquanto o método de fábrica na SeaLogisticsenquanto o método de fábrica na SeaLogistics classe retorna navios. O código que utiliza o método de fábrica (muitas vezes chamado de clienteO código que utiliza o método de fábrica (muitas vezes chamado de cliente O código) não vê uma diferença entre os produtos reais retornados por várias subclasses. O cliente trata todos os produtos como abstrato Transporte.várias subclasses. O cliente trata todos os produtos como abstrato Transporte. 74 Criacionais Design Patterns / método de fábrica
  • 7. Enquanto todas as classes de produtos implementar uma interface comum, você pode passar seus objetos para o código do cliente sem quebrá-lo. O cliente sabe que todos os objetos de transporte devem ter o entregar método,O cliente sabe que todos os objetos de transporte devem ter o entregar método,O cliente sabe que todos os objetos de transporte devem ter o entregar método, mas exatamente como ele funciona não é importante para o cliente. Estrutura• 75 Criacionais Design Patterns / método de fábrica
  • 8. 1. A produtos declara a interface, que é comum a todos1. A produtos declara a interface, que é comum a todos1. A produtos declara a interface, que é comum a todos objetos que podem ser produzidos pelo criador e suas subclasses. 2. produtos de concreto são diferentes implementações da produ-2. produtos de concreto são diferentes implementações da produ-2. produtos de concreto são diferentes implementações da produ- interface de UCT. 3. A O Criador classe declara o método de fábrica que retorna3. A O Criador classe declara o método de fábrica que retorna3. A O Criador classe declara o método de fábrica que retorna novos objetos produtos. É importante que o tipo de retorno desse método coincide com a interface do produto. Você pode declarar o método de fábrica como abstrata para forçar todas as subclasses para implementar as suas próprias versões do método. Como alternativa, o método de fábrica base pode retornar algum tipo de produto padrão. Note, apesar do seu nome, a criação do produto é não a responsabilidade primária doNote, apesar do seu nome, a criação do produto é não a responsabilidade primária doNote, apesar do seu nome, a criação do produto é não a responsabilidade primária do criador. Normalmente, a classe criador já tem alguma lógica do núcleo de negócios relacionados aos produtos. O método de fábrica contribui para dissociar essa lógica das classes de produtos concretos. Aqui está uma analogia: uma grande empresa de desenvolvimento de software pode ter um departamento de formação para programadores. No entanto, a função principal da empresa como um todo ainda está escrevendo código, não produzindo programadores. 4. Criadores de concreto substituir o método fábrica de base para que ele4. Criadores de concreto substituir o método fábrica de base para que ele4. Criadores de concreto substituir o método fábrica de base para que ele retorna um tipo diferente de produto. 76 Criacionais Design Patterns / método de fábrica