Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1
Padrões de ProjetoPadrões de Projeto
Disciplina: Engenharia de Software - 2009.1Disciplina: Engenharia de Software - 2009.1
Professora: Rossana Maria de Castro AndradeProfessora: Rossana Maria de Castro Andrade
Assistente da disciplina: Ricardo Fernandes de AlmeidaAssistente da disciplina: Ricardo Fernandes de Almeida
2
O que é um Padrão?O que é um Padrão?
 Um padrão descreve uma solução para um problema Um padrão descreve uma solução para um problema 
que ocorre com freqüência durante o desenvolvimento que ocorre com freqüência durante o desenvolvimento 
de software, podendo ser considerado como um par de software, podendo ser considerado como um par 
problema/solução” [Buschmann 96]. Design Patterns, problema/solução” [Buschmann 96]. Design Patterns, 
ou Padrões de Design*.ou Padrões de Design*.
 Padrões para alcançar objetivos na engenharia de software Padrões para alcançar objetivos na engenharia de software 
usando classes e métodos em linguagens orientadas a objeto.usando classes e métodos em linguagens orientadas a objeto.
 Inspirado em "A Pattern Language" de Christopher Inspirado em "A Pattern Language" de Christopher 
Alexander, sobre padrões de arquitetura de cidades, casas e Alexander, sobre padrões de arquitetura de cidades, casas e 
prédios.prédios.
 
3
PadrõesPadrões
 Padrões são um repertório de soluções e princípios que ajudam os Padrões são um repertório de soluções e princípios que ajudam os 
desenvolvedores a criar software e que são codificados em um desenvolvedores a criar software e que são codificados em um 
formato estruturado consistindo deformato estruturado consistindo de
• • Nome.Nome.
• • Problema que soluciona.Problema que soluciona.
• • Solução do problema.Solução do problema.
 O objetivo dos padrões é codificar conhecimento (knowing) O objetivo dos padrões é codificar conhecimento (knowing) 
existente de uma forma que possa ser reaplicado em contextos existente de uma forma que possa ser reaplicado em contextos 
diferentes.diferentes.
4
Padrões clássicos ou padrões Padrões clássicos ou padrões 
GoFGoF
 O livro "Design Patterns“ (1994) de Erich Gamma, John O livro "Design Patterns“ (1994) de Erich Gamma, John 
Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões 
de designde design
 • • São soluções genéricas para os problemas mais comuns do São soluções genéricas para os problemas mais comuns do 
desenvolvimeto de software orientado a objetos.desenvolvimeto de software orientado a objetos.
 • • O livro tornou-se um clássico na literatura orientada a objeto e O livro tornou-se um clássico na literatura orientada a objeto e 
continua atual.continua atual.
 • • Não são invenções. São documentação de soluções obtidas Não são invenções. São documentação de soluções obtidas 
através da experiência. Foram coletados de experiências de através da experiência. Foram coletados de experiências de 
sucesso na indústria de software, principalmente de projetos em sucesso na indústria de software, principalmente de projetos em 
C++ e SmallTalk.C++ e SmallTalk.
 • • Os quatro autores, são conhecidos como "The Gang of Four", Os quatro autores, são conhecidos como "The Gang of Four", 
ou GoF.ou GoF.
5
Por que aprender padrões?Por que aprender padrões?
 Aprender com a experiência dos outros.Aprender com a experiência dos outros.
 • • Identificar problemas comuns em engenharia de software e Identificar problemas comuns em engenharia de software e 
utilizar soluções testadas e bem documentadas.utilizar soluções testadas e bem documentadas.
 • • Utilizar soluções que têm um nome: facilita a comunicação, Utilizar soluções que têm um nome: facilita a comunicação, 
compreensão e documentação.compreensão e documentação.
 Aprender a programar bem com orientação a objetosAprender a programar bem com orientação a objetos
 • • Os 23 padrões de projeto "clássicos" utilizam as melhores Os 23 padrões de projeto "clássicos" utilizam as melhores 
práticas em OO para atingir os resultados desejadospráticas em OO para atingir os resultados desejados
 Desenvolver software de melhor qualidade.Desenvolver software de melhor qualidade.
 • • Os padrões utilizam eficientemente polimorfismo, herança, Os padrões utilizam eficientemente polimorfismo, herança, 
modularidade, composição, abstração para construir código modularidade, composição, abstração para construir código 
reutilizável, eficiente, de alta coesão e baixo acoplamento.reutilizável, eficiente, de alta coesão e baixo acoplamento.
6
Por que aprender padrões?(cont)Por que aprender padrões?(cont)
 Vocabulário comum Faz o sistema ficar menos 
complexo ao permitir que se fale em um nível 
mais alto de abstração.
 Ajuda na documentação e na aprendizagem
 • Conhecendo os padrões de projeto torna mais 
fácil a compreensão de sistemas existentes.
7
Elementos de um padrãoElementos de um padrão
 NomeNome
 ProblemaProblema
 • • Quando aplicar o padrão, em que condições?Quando aplicar o padrão, em que condições?
 SoluçãoSolução
 • • Descrição abstrata de um problema e como usar os Descrição abstrata de um problema e como usar os 
elementos disponíveis (classes e objetos) para elementos disponíveis (classes e objetos) para 
solucioná-lo.solucioná-lo.
 ConseqüênciasConseqüências
 • • Custos e benefícios de se aplicar o padrãoCustos e benefícios de se aplicar o padrão
 • • Impacto na flexibilidade, extensibilidade, Impacto na flexibilidade, extensibilidade, 
portabilidade e eficiência do sistema.portabilidade e eficiência do sistema.
8
Classificação dos 23 padrões Classificação dos 23 padrões 
segundo GoFsegundo GoF
9
AdapterAdapter
 "Objetivo: converter a interface de uma classe "Objetivo: converter a interface de uma classe 
em outra interface esperada pelos clientes. em outra interface esperada pelos clientes. 
Adapter permite a comunicação entre classes Adapter permite a comunicação entre classes 
que não poderiam trabalhar juntas devido à que não poderiam trabalhar juntas devido à 
incompatibilidade de suas interfaces." [GoF].incompatibilidade de suas interfaces." [GoF].
10
Cenário do ProblemaCenário do Problema
11
Duas Formas de Usar AdapterDuas Formas de Usar Adapter
 Class Adapter: usa herança múltipla:Class Adapter: usa herança múltipla:
12
Duas Formas de Usar Duas Formas de Usar 
Adapter(cont..)Adapter(cont..)
 Object Adapter: usa composiçãoObject Adapter: usa composição
13
Quando Usar?Quando Usar?
 Sempre que for necessário adaptar uma interface Sempre que for necessário adaptar uma interface 
para um cliente Class Adapter.para um cliente Class Adapter.
 • • Quando houver uma interface que permita a Quando houver uma interface que permita a 
implementação estática.implementação estática.
 Object AdapterObject Adapter
 • • Quando menor acoplamento for desejado.Quando menor acoplamento for desejado.
 • • Quando o cliente não usa uma interface Java Quando o cliente não usa uma interface Java 
ou classe abstrata que possa ser estendida.ou classe abstrata que possa ser estendida.
14
FacadeFacade
 "Oferecer uma interface única para um conjunto "Oferecer uma interface única para um conjunto 
de interfaces de um subsistema. Façade define de interfaces de um subsistema. Façade define 
uma interface de nível mais elevado que torna o uma interface de nível mais elevado que torna o 
subsistema mais fácil de usar." [GoF].subsistema mais fácil de usar." [GoF].
15
ProblemaProblema
 Cliente precisa saber muitos detalhes do Cliente precisa saber muitos detalhes do 
subsistema para utilizá-lo!subsistema para utilizá-lo!
16
ExemploExemplo
17
Quando Usar?Quando Usar?
 Sempre que for desejável criar uma interface para um conjunto Sempre que for desejável criar uma interface para um conjunto 
de objetos com o objetivo de facilitar o uso da aplicação.de objetoscom o objetivo de facilitar o uso da aplicação.
 • • Permite que objetos individuais cuidem de uma única tarefa, Permite que objetos individuais cuidem de uma única tarefa, 
deixando que a fachada se encarregue de divulgar as suas deixando que a fachada se encarregue de divulgar as suas 
operações.operações.
 Fachadas viabilizam a separação em camadas com alto grau de Fachadas viabilizam a separação em camadas com alto grau de 
desacoplamento.desacoplamento.
 Existem em várias partes da aplicaçãoExistem em várias partes da aplicação
 • • Fachada da aplicação para interface do usuárioFachada da aplicação para interface do usuário
 • • Fachada para sistema de persistência: Data Access ObjectFachada para sistema de persistência: Data Access Object
18
CompositeComposite
 "Compor objetos em estruturas de árvore para "Compor objetos em estruturas de árvore para 
representar hierarquias todo-parte. Composite representar hierarquias todo-parte. Composite 
permite que clientes tratem objetos individuais e permite que clientes tratem objetos individuais e 
composições de objetos de maneira uniforme." composições de objetos de maneira uniforme." 
[GoF].[GoF].
19
ProblemaProblema
 Cliente precisa tratar de maneira uniforme Cliente precisa tratar de maneira uniforme 
objetos individuais e composições desses objetos individuais e composições desses 
objetos.objetos.
20
SoluçãoSolução
 Tratar grupos e indivíduos diferentes através de Tratar grupos e indivíduos diferentes através de 
uma única interface.uma única interface.
21
Estrutura do CompositeEstrutura do Composite
22
Quando Usar?Quando Usar?
 Sempre que houver necessidade de tratar um Sempre que houver necessidade de tratar um 
conjunto como um indivíduo.conjunto como um indivíduo.
 Funciona melhor se relacionamentos entre os Funciona melhor se relacionamentos entre os 
objetos for uma árvore.objetos for uma árvore.
 • • Caso o relacionamento contenha ciclos, é Caso o relacionamento contenha ciclos, é 
preciso tomar precauções adicionais para evitar preciso tomar precauções adicionais para evitar 
loops infinitos, já que Composite depende de loops infinitos, já que Composite depende de 
implementações recursivas.implementações recursivas.
 Há várias estratégias de implementação.Há várias estratégias de implementação.
23
BridgeBridge
"Desacoplar uma abstração de sua implementação para que "Desacoplar uma abstração de sua implementação para que 
os dois possam variar independentemente." [GoF].os dois possam variar independentemente." [GoF].
24
Problema (I)Problema (I)
 Necessidade de um driver.Necessidade de um driver.
 Exemplo: implementações específicas para tratarExemplo: implementações específicas para tratar
objeto em diferentes meios persistentes.objeto em diferentes meios persistentes.
25
Problema(II)Problema(II)
 Mas herança complica a implementação.Mas herança complica a implementação.
26
Solução: usar BridgeSolução: usar Bridge
27
Estrutura do BridgeEstrutura do Bridge
28
Quando Usar?Quando Usar?
 Quando for necessário evitar uma ligação Quando for necessário evitar uma ligação 
permanente entre a interface e implementação.permanente entre a interface e implementação.
 Quando alterações na implementação não Quando alterações na implementação não 
puderem afetar clientes.puderem afetar clientes.
 Quando tanto abstrações como implementações Quando tanto abstrações como implementações 
precisarem ser capazes de suportar extensão precisarem ser capazes de suportar extensão 
através de herança.através de herança.
 Quando implementações são compartilhadas Quando implementações são compartilhadas 
entre objetos desconhecidos do cliente.entre objetos desconhecidos do cliente.
29
SingletonSingleton
 "Garantir que uma classe só tenha uma única "Garantir que uma classe só tenha uma única 
instância, e prover um ponto de acesso global a instância, e prover um ponto de acesso global a 
ela." [GoF].ela." [GoF].
30
ProblemaProblema
 Garantir que apenas um objeto exista, independente do Garantir que apenas um objeto exista, independente do 
número de requisições que receber para criá-lo.número de requisições que receber para criá-lo.
 AplicaçõesAplicações
 • • Um único banco de dados.Um único banco de dados.
 • • Um único acesso ao arquivo de log.Um único acesso ao arquivo de log.
 • • Um único objeto que representa um vídeo.Um único objeto que representa um vídeo.
 • • Uma única fachada (Façade pattern).Uma única fachada (Façade pattern).
 Objetivo: garantir que uma classe só tenha uma Objetivo: garantir que uma classe só tenha uma 
instância.instância.
31
Estrutura do SingletonEstrutura do Singleton
32
ObserverObserver
 "Definir uma dependência um-para-muitos entre "Definir uma dependência um-para-muitos entre 
objetos para que quando um objeto mudar de objetos para que quando um objeto mudar de 
estado, todos os seus dependentes sejam estado, todos os seus dependentes sejam 
notificados e atualizados automaticamente." notificados e atualizados automaticamente." 
[GoF].[GoF].
33
ProblemaProblema
 Como garantir que objetos que dependem de outro Como garantir que objetos que dependem de outro 
objeto fiquem em dia com mudanças naquele objeto?objeto fiquem em dia com mudanças naquele objeto?
 Como fazer com que os observadores tomem Como fazer com que os observadores tomem 
conhecimento do objeto de interesse?conhecimento do objeto de interesse?
 Como fazer com que o objeto de interesse atualize os Como fazer com que o objeto de interesse atualize os 
observadores quando seu estado mudar?observadores quando seu estado mudar?
 Possíveis riscosPossíveis riscos
 • • Relacionamento (bidirecional) implica alto acoplamento. Relacionamento (bidirecional) implica alto acoplamento. 
Como podemos eliminar o relacionamento bidirecional?Como podemos eliminar o relacionamento bidirecional?
34
Estrutura do ObserverEstrutura do Observer
35
MediatorMediator
 "Definir um objeto que encapsula como um "Definir um objeto que encapsula como um 
conjunto de objetos interagem. Mediator conjunto de objetos interagem. Mediator 
promove acoplamento fraco ao manter objetos promove acoplamento fraco ao manter objetos 
que não se referem um ao outro explicitamente, que não se referem um ao outro explicitamente, 
permitindo variar sua interação permitindo variar sua interação 
independentemente." [GoF].independentemente." [GoF].
36
ProblemaProblema
 Como permitir que um grupo de objetos se Como permitir que um grupo de objetos se 
comunique entre si sem que haja acoplamento comunique entre si sem que haja acoplamento 
entre eles?entre eles?
 Como remover o forte acoplamento presente Como remover o forte acoplamento presente 
em relacionamentos muitos para muitos?em relacionamentos muitos para muitos?
 Como permitir que novos participantes sejam Como permitir que novos participantes sejam 
ligados ao grupo facilmente?ligados ao grupo facilmente?
37
SoluçãoSolução
 Introduzir um mediador.Introduzir um mediador.
 • • Objetos podem se comunicar sem se conhecer.Objetos podem se comunicar sem se conhecer.
38
Estrutura do MediatorEstrutura do Mediator
39
Descrição da SoluçãoDescrição da Solução
 Um objeto Mediador deve encapsular toda a comunicação entre Um objeto Mediador deve encapsular toda a comunicação entre 
um grupo de objetos.um grupo de objetos.
 • • Cada objeto participante conhece o mediador mas ignora a Cada objeto participante conhece o mediador mas ignora a 
existência dos outros objetos.existência dos outros objetos.
 • • O mediador conhece cada um dos objetos participantes.O mediador conhece cada um dos objetos participantes.
 A interface do Mediador é usada pelos colaboradores para iniciar A interface do Mediador é usada pelos colaboradores para iniciar 
a comunicação e receber notificações.a comunicação e receber notificações.
 • • O mediador receberequisições dos remetentes.O mediador recebe requisições dos remetentes.
 • • O mediador repassa as requisições aos destinatários.O mediador repassa as requisições aos destinatários.
 • • Toda a política de comunicação é determinada pelo mediador Toda a política de comunicação é determinada pelo mediador 
(geralmente através de uma implementação concreta do (geralmente através de uma implementação concreta do 
mediador).mediador).
40
ProxyProxy
 "Prover um substituto ou ponto através do qual "Prover um substituto ou ponto através do qual 
um objeto possa controlar o acesso a outro." um objeto possa controlar o acesso a outro." 
[GoF].[GoF].
41
ProblemaProblema
 Sistema quer utilizar objeto real...Sistema quer utilizar objeto real...
 Mas ele não está disponível (remoto, Mas ele não está disponível (remoto, 
inaccessível, ...)inaccessível, ...)
42
Problema(cont..)Problema(cont..)
 Solução: arranjar um intermediário que saiba se Solução: arranjar um intermediário que saiba se 
comunicar com ele eficientemente.comunicar com ele eficientemente.
43
Estrutura do ProxyEstrutura do Proxy
 Cliente usa intermediário em vez de sujeito real.Cliente usa intermediário em vez de sujeito real.
 Intermediário suporta a mesma interface que Intermediário suporta a mesma interface que 
sujeito real.sujeito real.
 Intermediário contém uma referência para o Intermediário contém uma referência para o 
sujeito real e repassa chamadas, possivelmente, sujeito real e repassa chamadas, possivelmente, 
acrescentando informações ou filtrando dados acrescentando informações ou filtrando dados 
no processo.no processo.
44
Estrutura do Proxy(cont..)Estrutura do Proxy(cont..)
45
Quando usar??Quando usar??
 A aplicação mais comum é em objetos distribuídosA aplicação mais comum é em objetos distribuídos
 Exemplo: RMI (e EJB)Exemplo: RMI (e EJB)
 • • O Stub é proxy do cliente para o objeto remoto.O Stub é proxy do cliente para o objeto remoto.
 • • O Skeleton é parte do proxy: cliente remoto chamado O Skeleton é parte do proxy: cliente remoto chamado 
pelo Stub.pelo Stub.
 Outras aplicações típicas:Outras aplicações típicas:
 • • Image proxy: guarda o lugar de imagem sendo Image proxy: guarda o lugar de imagem sendo 
carregada.carregada.
46
Chain of Chain of 
ResponsibilityResponsibility
 "Evita acoplar o remetente de uma requisição ao "Evita acoplar o remetente de uma requisição ao 
seu destinatário ao dar a mais de um objeto a seu destinatário ao dar a mais de um objeto a 
chance de servir a requisição. Compõe os chance de servir a requisição. Compõe os 
objetos em cascata e passa a requisição pela objetos em cascata e passa a requisição pela 
corrente até que um objeto a sirva." [GoF].corrente até que um objeto a sirva." [GoF].
47
ProblemaProblema
 Permitir que vários objetos possam servir a uma Permitir que vários objetos possam servir a uma 
requisição ou repassá-la.requisição ou repassá-la.
 Permitir divisão de responsabilidades de forma Permitir divisão de responsabilidades de forma 
transparente.transparente.
48
Estratégias de Chain Of Estratégias de Chain Of 
ResponsibilityResponsibility
 Pode-se implementar um padrão de várias formas Pode-se implementar um padrão de várias formas 
diferentes. Cada forma é chamada de estratégia (ou diferentes. Cada forma é chamada de estratégia (ou 
idiom*)idiom*)
 Chain of Responsibility pode ser implementada com Chain of Responsibility pode ser implementada com 
estratégias que permitem maior ou menor acoplamento estratégias que permitem maior ou menor acoplamento 
entre os participantes.entre os participantes.
 Usando um mediador: só o mediador sabe quem é o Usando um mediador: só o mediador sabe quem é o 
próximo participante da cadeiapróximo participante da cadeia
 Usando delegação: cada participante conhece o seu Usando delegação: cada participante conhece o seu 
Sucessor.Sucessor.
49
Factory MethodFactory Method
 "Definir uma interface para criar um objeto, mas "Definir uma interface para criar um objeto, mas 
deixar que subclasses decidam que classe deixar que subclasses decidam que classe 
instanciar. Factory Method permite que uma instanciar. Factory Method permite que uma 
classe delegue a responsabilidade de classe delegue a responsabilidade de 
instanciamento às subclasses." [GoF].instanciamento às subclasses." [GoF].
50
ProblemaProblema
 O acesso a um objeto concreto será através da O acesso a um objeto concreto será através da 
interface conhecida através de sua superclasse, interface conhecida através de sua superclasse, 
mas o cliente também não quer (ou não pode) mas o cliente também não quer (ou não pode) 
saber qual implementação concreta está usando.saber qual implementação concreta está usando.
51
Como Implementar?Como Implementar?
 É possível criar um objeto sem ter conhecimento algum É possível criar um objeto sem ter conhecimento algum 
de sua classe concreta?de sua classe concreta?
 • • Esse conhecimento deve estar em alguma parte do Esse conhecimento deve estar em alguma parte do 
sistema, mas não precisa estar no cliente.sistema, mas não precisa estar no cliente.
 • • FactoryMethod define uma interface comum para FactoryMethod define uma interface comum para 
criar objetos.criar objetos.
 • • O objeto específico é determinado nas diferentes O objeto específico é determinado nas diferentes 
implementações dessa interface.implementações dessa interface.
 • • O cliente do FactoryMethod precisa saber sobre O cliente do FactoryMethod precisa saber sobre 
implementações concretas do objeto criador do implementações concretas do objeto criador do 
produto desejado.produto desejado.
52
Estrutura de Estrutura de 
Factory MethodFactory Method
53
Abstract FactoryAbstract Factory
 "Prover uma interface para criar famílias de "Prover uma interface para criar famílias de 
objetos relacionados ou dependentes sem objetos relacionados ou dependentes sem 
especificar suas classes concretas." [GoF].especificar suas classes concretas." [GoF].
54
ProblemaProblema
 Criar uma família de objetos relacionados sem Criar uma família de objetos relacionados sem 
conhecer suas classes concretas.conhecer suas classes concretas.
55
Estrutura do Abstract FactoryEstrutura do Abstract Factory
56
PrototypePrototype
 "Especificar os tipos de objetos a serem criados "Especificar os tipos de objetos a serem criados 
usando uma instância como protótipo e criar usando uma instância como protótipo e criar 
novos objetos ao copiar este protótipo." [GoF]novos objetos ao copiar este protótipo." [GoF]
57
ProblemaProblema
 Criar um objeto novo, mas aproveitar o estado Criar um objeto novo, mas aproveitar o estado 
previamente existente em outro objeto.previamente existente em outro objeto.
58
Estrutura PrototypeEstrutura Prototype
59
ResumoResumo
 O padrão Prototype permite que um cliente crie O padrão Prototype permite que um cliente crie 
novos objetos ao copiar objetos existentes.novos objetos ao copiar objetos existentes.
 Uma vantagem de criar objetos deste modo éUma vantagem de criar objetos deste modo é
poder aproveitar o estado existente de um objeto.poder aproveitar o estado existente de um objeto.
60
Template MethodTemplate Method
 "Definir o esqueleto de um algoritmo dentro de "Definir o esqueleto de um algoritmo dentro de 
uma operação, deixando alguns passos a serem uma operação, deixando alguns passos a serem 
preenchidos pelas subclasses. Template Method preenchidos pelas subclasses. Template Method 
permite que suas subclasses redefinam certos permite que suas subclasses redefinam certos 
passos de um algoritmo sem mudar sua passos de um algoritmo sem mudar sua 
estrutura." [GoF]estrutura." [GoF]
61
ProblemaProblema
62
Solução:Template MethodSolução:Template Method
 • • O que é um Template MethodO que é um Template Method
 • • Um Template Method define um algoritmo em Um TemplateMethod define um algoritmo em 
termos de operações abstratas que subclasses termos de operações abstratas que subclasses 
sobrepõem para oferecer comportamento concretosobrepõem para oferecer comportamento concreto
 Quando usar?Quando usar?
 • • Quando a estrutura fixa de um algoritmo puder ser Quando a estrutura fixa de um algoritmo puder ser 
definida pela superclasse deixando certas partes para definida pela superclasse deixando certas partes para 
serem preenchidos por implementações que podem serem preenchidos por implementações que podem 
variar.variar.
63
Template Method em JavaTemplate Method em Java
64
StateState
 "Permitir a um objeto alterar o seu "Permitir a um objeto alterar o seu 
comportamento quanto o seu estado interno comportamento quanto o seu estado interno 
mudar. O objeto irá aparentar mudar de classe." mudar. O objeto irá aparentar mudar de classe." 
[GoF][GoF]
65
ProblemaProblema
 Objetivo: usar objetos para representar estados e Objetivo: usar objetos para representar estados e 
polimorfismo para tornar a execução de tarefas polimorfismo para tornar a execução de tarefas 
dependentes de estado transparentes.dependentes de estado transparentes.
66
ExemploExemplo
67
Estrutura do StateEstrutura do State
 Contexto: define a interface de interesse aos clientesContexto: define a interface de interesse aos clientes
mantém uma instância de um EstadoConcreto que define mantém uma instância de um EstadoConcreto que define 
o estado atual.o estado atual.
 Estado:define uma interface para encapsular o Estado:define uma interface para encapsular o 
comportamento associado com um estado particular do comportamento associado com um estado particular do 
contexto.contexto.
 EstadoConcreto: Implementa um comportamento EstadoConcreto: Implementa um comportamento 
associado ao estado do contexto.associado ao estado do contexto.
68
Estrutura State(Cont..)Estrutura State(Cont..)
69
StrategyStrategy
 "Definir uma família de algoritmos, encapsular "Definir uma família de algoritmos, encapsular 
cada um, e fazê-los intercambiáveis. Strategy cada um, e fazê-los intercambiáveis. Strategy 
permite que algoritmos mudem permite que algoritmos mudem 
independentemente entre clientes que os independentemente entre clientes que os 
utilizam." [GoF]utilizam." [GoF]
70
ProblemaProblema
 Várias estratégias, escolhidas de acordo com Várias estratégias, escolhidas de acordo com 
opções ou condições.opções ou condições.
71
Problema(cont..)Problema(cont..)
 Idêntico a state na implementação. Diferente na Idêntico a state na implementação. Diferente na 
intenção!intenção!
72
Estrutura do StrategyEstrutura do Strategy
 Um contexto repassa requisições de seus clientes Um contexto repassa requisições de seus clientes 
para sua estratégia. Clientes geralmente criam e para sua estratégia. Clientes geralmente criam e 
passam uma EstrategiaConcreta para o contexto. passam uma EstrategiaConcreta para o contexto. 
Depois, clientes interagem apenas com o Depois, clientes interagem apenas com o 
contexto.contexto.
 Estrategia e Contexto interagem para Estrategia e Contexto interagem para 
implementar o algoritmo escolhido. Um implementar o algoritmo escolhido. Um 
contexto pode passar todos os dados necessários contexto pode passar todos os dados necessários 
ou uma cópia de si próprio.ou uma cópia de si próprio.
73
Estrutura Strategy(cont..)Estrutura Strategy(cont..)
74
Quando Usar?Quando Usar?
 Quando classes relacionadas forem diferentes apenas Quando classes relacionadas forem diferentes apenas 
no seu comportamento.no seu comportamento.
 • • Strategy oferece um meio para configurar a classe Strategy oferece um meio para configurar a classe 
com um entre vários comportamentos.com um entre vários comportamentos.
 Quando você precisar de diferentes variações de um Quando você precisar de diferentes variações de um 
mesmo algoritmo.mesmo algoritmo.
 Quando um algoritmo usa dados que o cliente não deve Quando um algoritmo usa dados que o cliente não deve 
conhecer.conhecer.
 Quando uma classe define muitos comportamentos, Quando uma classe define muitos comportamentos, 
e estes aparecem como múltiplas declarações condicionais e estes aparecem como múltiplas declarações condicionais 
em suas operações.em suas operações.
75
CommandCommand
 "Encapsular uma requisição como um objeto, "Encapsular uma requisição como um objeto, 
permitindo que clientes parametrizem diferentes permitindo que clientes parametrizem diferentes 
requisições, filas ou requisições de log, e requisições, filas ou requisições de log, e 
suportar operações reversíveis." [GoF]suportar operações reversíveis." [GoF]
76
ProblemaProblema
77
Estrutura do CommandEstrutura do Command
78
IteratorIterator
 "Prover uma maneira de acessar os elementos de "Prover uma maneira de acessar os elementos de 
um objeto agregado seqüencialmente sem expor um objeto agregado seqüencialmente sem expor 
sua representação interna." [GoF]sua representação interna." [GoF]
79
ProblemaProblema
80
Para que serve?Para que serve?
 Iterators servem para acessar o conteúdo de um agregado sem expor sua Iterators servem para acessar o conteúdo de um agregado sem expor sua 
representação interna.representação interna.
 Oferece uma interface uniforme para atravessar diferentesestruturas Oferece uma interface uniforme para atravessar diferentesestruturas 
agregadasagregadas
 Iterators são implementados nas coleções do Java. É obtido através do Iterators são implementados nas coleções do Java. É obtido através do 
método iterator() de Collection, que devolve uma instância de método iterator() de Collection, que devolve uma instância de 
java.util.Iterator.java.util.Iterator.
 Interface java.util.Iterator: Interface java.util.Iterator: 
package java.util;package java.util;
public interface Iterator<E> {public interface Iterator<E> {
boolean hasNext();boolean hasNext();
Object next();Object next();
void remove();void remove();
}}
 iterator() é um exemplo de Factory Methoditerator() é um exemplo de Factory Method
81
DecoratorDecorator
 "Anexar responsabilidades adicionais a um "Anexar responsabilidades adicionais a um 
objeto dinamicamente. Decorators oferecem objeto dinamicamente. Decorators oferecem 
uma alternativa flexível ao uso de herança para uma alternativa flexível ao uso de herança para 
estender uma funcionalidade." [GoF]estender uma funcionalidade." [GoF]
82
Problema(1)Problema(1)
 A primeira idéia é criar subclasses que A primeira idéia é criar subclasses que 
implementem as funcionalidades desejadasimplementem as funcionalidades desejadas
 ListaSincronizadaListaSincronizada
 ListaComEventosListaComEventos
 ListaNaoModificavelListaNaoModificavel
83
Problema(2)Problema(2)
 Mas e se desejarmos mais de uma funcionalidade Mas e se desejarmos mais de uma funcionalidade 
ao mesmo tempo?ao mesmo tempo?
 Nesse caso teremos uma explosão de classes. As Nesse caso teremos uma explosão de classes. As 
novas classes (além das 3 anteriores) poderiam novas classes (além das 3 anteriores) poderiam 
ser chamadas:ser chamadas:
 ListaNaoModificavelSincronizadaListaNaoModificavelSincronizada
 ListaComEventosNaoModificavelListaComEventosNaoModificavel
 ListaComEventosSincronizadaListaComEventosSincronizada
 ListaComEventosNaoModificavelSincronizadaListaComEventosNaoModificavelSincronizada
84
Problema(3)Problema(3)
 Necessidade de adicionar responsabilidades aos Necessidade de adicionar responsabilidades aos 
objetos, com a impossibilidade de criar extensões das objetos, com a impossibilidade de criar extensões das 
subclasses;subclasses;
 Às vezes é até possível realizar um grande número Às vezes é até possível realizar um grande número 
de extensões independentes, mas podem causar uma de extensões independentes, mas podem causar uma 
explosão de subclasses para suportar todas as explosão de subclasses para suportar todas as 
combinações;combinações;85
EstruturaEstrutura
86
ExemploExemplo
87
Exemplo c/código FonteExemplo c/código Fonte
88
Quando usar???Quando usar???
 Utilizado para adicionar responsabilidades a Utilizado para adicionar responsabilidades a 
objetos individuais de forma dinâmica e objetos individuais de forma dinâmica e 
transparente, isto é, sem afetar outros objetos, transparente, isto é, sem afetar outros objetos, 
da mesma forma, quando se quer retirar da mesma forma, quando se quer retirar 
responsabilidades;responsabilidades;
 Quando a utilização de heranças para a Quando a utilização de heranças para a 
implementação do mesmo afetará a implementação do mesmo afetará a 
flexibilidade do sistema;flexibilidade do sistema; 
89
Padrão Arquitetural: MVCPadrão Arquitetural: MVC
 Padrões Arquiteturais: expressam o esquema ou Padrões Arquiteturais: expressam o esquema ou 
organização estrutural fundamental de sistemas organização estrutural fundamental de sistemas 
de software ou hardwarede software ou hardware
 Padrões de Projeto: Define soluções de Padrões de Projeto: Define soluções de 
problemas de projetos de software orientado a problemas de projetos de software orientado a 
objetos.objetos.
90
MVCMVC
 Dividir um componente ou uma aplicação Dividir um componente ou uma aplicação 
interativa (subsistema) em três partes lógicas:o interativa (subsistema) em três partes lógicas:o 
modelo (model) que contém funcionalidades e modelo (model) que contém funcionalidades e 
dados; visões(views) mostram informações para dados; visões(views) mostram informações para 
o usuário;controladores (controllers) manipulam o usuário;controladores (controllers) manipulam 
os eventos das entradas. Um mecanismo de os eventos das entradas. Um mecanismo de 
propagação de mudanças garante a consistência propagação de mudanças garante a consistência 
entre a interface do usuário e o modelo.entre a interface do usuário e o modelo.
91
ProblemaProblema
 Estender a funcionalidade de uma aplicação Estender a funcionalidade de uma aplicação 
através apenas da modificação dos menus, da através apenas da modificação dos menus, da 
visão do usuário.visão do usuário. 
92
SoluçãoSolução
 O padrão MVC divide a aplicação em três O padrão MVC divide a aplicação em três 
camadas: Entrada (View), Processamento camadas: Entrada (View), Processamento 
(Controller) e Saída (Model).(Controller) e Saída (Model).
 Utilizar o padrão Observer e estendê-lo para Utilizar o padrão Observer e estendê-lo para 
permitir o controle das janelas baseado-em-permitir o controle das janelas baseado-em-
eventos. O Padrão MVC estende o Observer eventos. O Padrão MVC estende o Observer 
incorporando um elemento controlador incorporando um elemento controlador 
(Controller). (Controller). 
93
Componentes do MVC(1)Componentes do MVC(1)
 O O ModeloModelo diz respeito ao gerenciamento da diz respeito ao gerenciamento da 
informação e ao comportamento da aplicação. O informação e ao comportamento da aplicação. O 
ModeloModelo seria uma mera representação do seria uma mera representação do 
conteúdo do banco de dados ou entidades de conteúdo do banco de dados ou entidades de 
domínio e pelas regras de negócio intrínsecas a domínio e pelas regras de negócio intrínsecas a 
essas entidades. essas entidades. 
 A A VisãoVisão é responsável por apresentar as é responsável por apresentar as 
entidades de domínio ao usuário, constituindo a entidades de domínio ao usuário, constituindo a 
parte visível do sistema.parte visível do sistema.
94
Componentes do MVC(2)Componentes do MVC(2)
 O O ControleControle garante o total desacoplamento garante o total desacoplamento 
entre essas duas partes principais da aplicação. O entre essas duas partes principais da aplicação. O 
Controle interpreta as ações do usuário Controle interpreta as ações do usuário 
provenientes da Visão e comanda a execução provenientes da Visão e comanda a execução 
das regras de negócio contidas no Modelo, além das regras de negócio contidas no Modelo, além 
disso, comanda a Visão para que ela apresente disso, comanda a Visão para que ela apresente 
adequadamente a informação ao usuário. adequadamente a informação ao usuário. 
95
Componentes do MVC(3)Componentes do MVC(3)
 View - Não esta preocupada em como a View - Não esta preocupada em como a 
informação foi obtida ou onde ela foi informação foi obtida ou onde ela foi 
obtida apenas exibe a informaçãoobtida apenas exibe a informação
 Inclui os elementos de exibição no cliente : Inclui os elementos de exibição no cliente : 
HTML , XML , ASP , Applets .HTML , XML , ASP , Applets .
 É a camada de interface com o usuário.É a camada de interface com o usuário.
 É usada para receber a entrada de dados e É usada para receber a entrada de dados e 
apresentar o resultado.apresentar o resultado.
96
Componentes do MVC(4)Componentes do MVC(4)
 Model - É o coração da aplicação . Responsável Model - É o coração da aplicação . Responsável 
por tudo que a aplicação vai fazer.por tudo que a aplicação vai fazer.
 modela os dados e o comportamento por atrás do modela os dados e o comportamento por atrás do 
processo de negócios.processo de negócios.
 se preocupa apenas com o armazenamento , se preocupa apenas com o armazenamento , 
manipulação e geração de dados.manipulação e geração de dados.
 É um encapsulamento de dados e de É um encapsulamento de dados e de 
comportamento independente da apresentação.comportamento independente da apresentação.
97
Componentes do MVC(5)Componentes do MVC(5)
 Camada de Controle - determina o fluxo da Camada de Controle - determina o fluxo da 
apresentação servindo como uma camada apresentação servindo como uma camada 
intermediária entre a camada de apresentação e a intermediária entre a camada de apresentação e a 
lógica.lógica.
 controla e mapeia as ações.controla e mapeia as ações.
98
Estrutura MVC(1)Estrutura MVC(1)
99
Estrutura MVC(2)Estrutura MVC(2)
100
Obrigado!!!!Obrigado!!!!
E-mail: ricferal@gmail.comE-mail: ricferal@gmail.com
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86
	Slide 87
	Slide 88
	Slide 89
	Slide 90
	Slide 91
	Slide 92
	Slide 93
	Slide 94
	Slide 95
	Slide 96
	Slide 97
	Slide 98
	Slide 99
	Slide 100

Mais conteúdos dessa disciplina