padrões comportamentaisjhcf/mybooks/iess/patterns/...facade factory method observer mediator...
Post on 21-Oct-2020
14 Views
Preview:
TRANSCRIPT
-
Padrões Comportamentais
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Formulário para Descrição de Padrões
�Nome e Classificação�Intenção�Também Conhecido
Como�Motivação�Aplicabilidade
�Estrutura�Participantes�Colaboradores�Conseqüências�Implementação�Exemplo de Código�Usos Conhecidos�Padrões
Relacionados
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Notação de Classes e Objetos
ClasseAbstrata
operaçãoAbstrata()
SubclasseConcreta1operação()
variávelDeInstância
referencia objetoagrega
cria
pseudo código
ClasseConcretaummuitos
umObjetoreferênciaAObjeto outroObjeto
variávelDeInstância
SubclasseConcreta2
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Diagrama de Interação de Objetos
umObjetoop
eraç
ão a
tiva
sobr
eo
obje
to
TEM
PO
outroObjeto.método()this.método()
outroObjeto
outroObjeto = new Objeto()(instanciação)
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais(1/2)
� Tratam de algoritmos e como atribuir responsabilidades entre objetos
ChainOfResponsibility exec
Command
new
exec()
Interpreter&
|
b c
a *
Iterator
Mediator Memento
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Observer(s)
30%, 20%, 50%
Padrões Comportamentais(2/2)
� Tratam de algoritmos e como atribuir responsabilidades entre objetos
Visitor
State Strategy
a() b()
a() b()
TemplateMethod()a(..);...b(..);
Visitor Visitor
30%, 10%, 60%
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
�Enquanto se concentram apenas na forma como os objetos são conectados, criam complexos fluxos de controle que são difíceis de seguir em runtime.
�De Classe�baseados no uso de herança
�De Objeto�baseados no uso de composição
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
� Chain of Responsibility- Encadeamento de Atendentes
� Command - Comando� Interpreter -
Interpretador� Iterator - Iterador� Mediator - Mediador
� Memento - Lembrança � Observer - Observador� State - Estado� Strategy - Estratégia� Template Method -
Esqueleto de Método� Visitor - Visitante
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
� Chain of Responsibility - Encadeamento de Atendentes (Objeto) Evita acoplamento entre solicitantes e atendentes permitindo que mais de um objeto tenha chance de tratar da solicitação. Encadeia os atendentes e passa a solicitação através desta cadeia até que algum deles a trate.
� Command - Comando (Objeto) Encapsula uma solicitação no interior de um objeto, permitindo que se parametrize clientes com diferentes solicitações, filas ou registros de solicitações, suportando ainda o cancelamento de solicitações.
� Interpreter - Interpretador (Classe) Dada uma linguagem, cria uma representação para a gramática da linguagem, juntamentecom um interpretador que utilizar esta representação para interpretar sentenças na linguagem.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
� Iterator - Iterador (Objeto) Provê uma forma de acessar seqüencialmente os elementos de um agregado de objetos, sem expor a representação interna deste agregado.
� Mediator - Mediador (Objeto) Define um objeto que encapsula o modo como um conjunto de objetos interage. Promove um acoplamento fraco entre objetos, evitando que referenciem diretamente um ao outro e permitindo que se possa variar a interação entre eles de modo independente.
� Memento - Lembrança (Objeto) Sem violar encapsulamento, captura e armazena externamente o estado de um objeto, de modo que o estado anterior de um objeto possa ser posteriormente restaurado.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
� Observer - Observador (Objeto) Define uma dependência 1-para-n entres objetos, de modo que quando o estado de um objeto é alterado todos seus dependentes são notificados e atualizados automaticamente.
� State - Estado (Objeto) Permite que um objeto altere seu comportamento quando seu estado interno se modifica. O objeto parecerá ter mudado de classe.
� Strategy - Estratégia (Objeto) Define uma família de algoritmos, encapsula cada um, e os faz inter-cambiáveis. Permite que o algoritmo varie independentemente dos clientes que o utilizam.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrões Comportamentais
� Template Method - Esqueleto de Método (Classe) Define o esqueleto de um algoritmo através de uma operação, deixando que subclasses refinem o restante do algoritmo. Permitem que subclasses redefinam certos aspectos de um algoritmo sem modificar a estrutura do algoritmo.
� Visitor - Visitante (Objeto) Representa uma operação a ser executada sobre os elementos da estrutura de um objeto. Visitantes permitem que se definam novas operações sem modificar as classes dos elementos sobre as quais ele atua.
-
Chain of Responsibility
ChainOfResponsibility
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Chain of Responsibility
� Intenção�Evita acoplamento entre solicitantes e atendentes permitindo
que mais de um objeto tenha chance de tratar da solicitação. Encadeia os atendentes e passa a solicitação através desta cadeia até que algum deles a trate.
� Motivação� Considere, por exemplo, a construção de um conjunto de helps
(auxílios) em uma GUI. � Suponha que o usuário possa obter auxílio a partir de qualquer parte
da interface pressionnando, F1. O help deve então ser sensível ao contexto onde foi ativado.
�Nestes casos torna-se natural criar vários níveis de auxílio, se aplicando da situação mais específica à mais geral.
�Quando o contexto mais específico não dispuser de auxílio, o contexto de auxílio imediatamente superior deve ser ativado.
� A idéia do padrão é facilitar o desacoplamento entre o solicitante (botão onde foi invocado o help) e o atendente (janela de help ativada)
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Client Handler
handleRequest()
ConcreteHandler2
handleRequest()
Padrão Chain of ResponsibilityEstrutura e Participantes
ConcreteHandler1
handleRequest()
successor
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Chain of ResponsibilityAplicabilidade
� Use o Padrão quando:�Mais de um objeto pode tratar de um pedido, e o tratador de
pedidos (handler) não é conhecido a priori. O handler deve ser buscado automaticamente de forma ascendente.
�Você quer emitir um pedido para um de vários objetos sem especificar o recebedor de forma explícita.
�O conjunto de objetos que pode tratar de um pedido deve ser configurado dinamicamente.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Chain of ResponsibilityConseqüências
� Acoplamento reduzido�Evita que um objeto (client) seja forçado a tomar conhecimento
do outro (handler)�O objeto só precisa saber que o pedido foi tratado
apropriadamente�A estrutura da cadeia não precisa ser conhecida
� Flexibilidade na atribuição de responsabilidades para objetos (subclasses, alteração dinâmica da cadeia)
� Sucesso no tratamento do pedido não é garantido
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Chain of ResponsibilityExercícios
� Observe os trechos de código das próximas 2 páginas e veja como funciona a Chain of Responsibility do tratamento de eventos no AWT 1.0.
� Veja também detalhes do código fonte das classes Component�Método handleEvent() e suas várias ramificações.
-
Class Component {..public boolean postEvent(Event e) {if (handleEvent(e)) {e.consume();return true;
}Component parent = this.parent;...if (parent != null) { ...if (parent.postEvent(e)) {e.consume();return true;
}}return false;
}}
-
public class BancoApplet extends Applet {Button clientesButton, contasButton, crediteButton, debiteButton;
public boolean handleEvent(Event evt) {if (evt.id == Event.ACTION_EVENT) {if (evt.target == clientesButton) {...
} else if (evt.target == contasButton) {...
} else if (evt.target == crediteButton) {...
} else if (evt.target == debiteButton) {...
}} else {
return super.handleEvent(evt); }
}}
-
Command
execCommand
new
exec()
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Command
� Intenção�Encapsula uma solicitação no interior de um objeto, permitindo que se
parametrize clientes com diferentes solicitações, filas ou registros de solicitações, suportando ainda o cancelamento de solicitações.
� Motivação�Algumas vezes é necessário se fazer uma solicitação de serviço
sem conhecimento algum do tipo de operação que está sendo requerida.
�Na construção de um menu, por exemplo.�O padrão Command permite que um menu possa solicitar
execução de pedidos sem conhecer a natureza destes pedidos, pois o próprio objeto encapsula os detalhes da execução do pedido.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
receiver.action();
Client
Receiver
action()ConcreteCommand
execute()
Command
execute()
Padrão CommandEstrutura e Participantes
state
Invoker
receiver
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão CommandColaborações
anInvokeraCommandaClientaReceiver
aCommand = new Command
StoreCommand(aCommand)
execute()action()
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão CommandAplicabilidade
� Parametrizar objetos com uma ação a executar. � Tal parametrização pode ser feita com funções de callback em
linguagens imperativas. Comandos são um substituto orientado a objetos para callbacks.
� Especificar, armazenar e executar pedidos em momentos diferentes. � Commands podem ser transferidos entre espaços de endereçamento e
máquinas.� Suportar undo
� A operação execute pode armazenar o estado para reverter os efeitos do próprio comando.
� Suportar ‘logs’ de modificações� Através da inclusão de undoable Commands em meio persistente.
� Estruturar um sistema em torno de operações de alto nível� Constituídas internamente por várias operações primitivas. Facilidades
para extensão do sistema.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão CommandConseqüências
� Desacoplamento do objeto que invoca uma operação, do outro que executa esta operação
� Comandos são objetos, e como tal podem ser manipulados e refinados.
� Comandos podem ser compostos, criando MacroCommands
� É fácil criar novos comandos.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão CommandExercícios
� Veja a capacidade de suporte à implementação dinâmica do padrão Command dentro dos pacotes java.lang e java.lang.reflect�Class java.lang.Class
⌧Method[] getMethods();
�Classe java.lang.reflect.Method⌧Object invoke(Object target, Object[] args);
http://padct01:2001/java/lang/Object.html
-
Interpreter
Interpreter&
|
b c
a *
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Interpreter
� Intenção�Dada uma linguagem, cria uma representação para a gramática da
linguagem, juntamente com um interpretador que utilizar esta representação para interpretar sentenças na linguagem.
� Motivação�Quando uma estrutura de problema particular ocorre várias vezes,
pode ser interessante representá-la através de uma sentença em uma linguagem simples, de modo a solucionar o problema através da construção de um interpretador para esta sentença.
� Em várias destas situações, em vez de construir algoritmos de interpretação manualmente, um interpretador genérico de expressões regulares pode solucionar o problema rapidamente.
�O padrão Interpreter usa classes para representar cada regra de uma gramática (expressão regular).
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão InterpreterAplicabilidade
� Use o Padrão quando:�A gramática é simples
⌧Para gramáticas complexas a hierarquia de classes se torna difícil de gerenciar. Neste caso, geradores de parsers são uma alternativa melhor.
�Eficiência não é uma questão crítica⌧Código intermediário permite maior eficiência⌧Expressões podem ser traduzidas para máquinas de estado finito⌧Neste casos, o tradutor pode ser criado através de um interpreter
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão InterpreterConseqüências
� É fácil modificar e estender a gramática� Implementar a gramática também é fácil� Gramáticas complexas são difíceis de manter� Adicionar novas formas de interpretar expressões é
simples
-
Iterator
Iterator
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Iterator (Cursor)
� Intenção�Provê uma forma de acessar seqüencialmente os elementos de um
agregado de objetos, sem expor a representação interna deste agregado.
� Motivação�Objetos agregados como listas, tabelas hash, dicionários, etc,
devem permitir que se acessem seus elementos de modo abstrato, sem que a representação interna de sua estrutura seja exposta
�Eventualmente também pode se desejar fazer duas travessias concorrentes sobre um mesmo objeto agregado.
�O padrão Iterator permite a criação de tais facilidades.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Return new ConcreteIterator(this);
ClientAggregate
createIterator()
ConcreteAggregate
createIterator()
Padrão IteratorEstrutura e Participantes
Iterator
first()next()isDone()currentItem()
ConcreteIterator
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão IteratorAplicabilidade
� Use o Padrão Iterator quando:�Se deseja acessar o conteúdo de um objeto agregado sem
expor sua representação interna�Se deseja suportar múltiplas travessias de um objeto agregado�Se quer prover uma interface uniforme para atravessar
diferentes estruturas agregadas. Suportar iteração polimórfica
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão IteratorConseqüências
� Suporte a variações na maneira de se atravessar um objeto agregado (pre-order, pós-ordem, em-ordem)
� Simplificação da interface do agregado� Mais de um cursor pendente sobre um agregado
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão IteratorExercícios
� Observar o uso de agregados no pacote java.util.�JDK 1.1 - Hashtable, Vector, Enumeration�JDK 1.2 - Collection, Iterator
Hash Table Resizable Array Balanced Tree Linked List
HashSet TreeSet
ArrayList LinkedList
HashMap TreeMap
Set
List
Map
IMPLEMENTAÇÕES - JDK 1.2
INTE
RFA
CES
-
Mediator
Mediator
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Mediator
� Intenção�Define um objeto que encapsula o modo como um conjunto de objetos
interage. Promove um acoplamento fraco entre objetos, evitando que referenciem diretamente um ao outro e permitindo que se possa variar a interação entre eles de modo independente.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MediatorEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MediatorAplicabilidade
� Use o Padrão Mediator quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MediatorConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MediatorExercícios
-
Memento
Memento
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Memento
� Intenção�Sem violar encapsulamento, captura e armazena externamente o
estado de um objeto, de modo que o estado anterior de um objeto possa ser posteriormente restaurado.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MementoEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MementoAplicabilidade
� Use o Padrão Memento quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MementoConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão MementoExercícios
-
Observer
Observer(s)
30%, 20%, 50%30%, 10%, 60%
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Observer
�Intenção�Define uma dependência 1-para-n entres
objetos, de modo que quando o estado de um objeto é alterado todos seus dependentes são notificados e atualizados automaticamente.
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão ObserverMotivação
� Suponha que você deseja fornecer várias visões distintas de um mesmo objeto que funciona como um repositório de dados
� Cada visão é criada por um objeto observador independente
� Caso cada observador seja diretamente conectado ao repositório, isto criará uma dependência do repositório com relação aos diferentes observadores, o que lhe reduzirá a reusabilidade e flexibilidade
� O padrão Observer descreve uma forma de manutenção destes relacionamentos de modo que observadores e repositórios sejam facilmente substituídos
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão ObserverEstrutura e Participantes
return subjectState
Subject
attach(Observer)
Observer
update()detach(Observer)notify() For all o in observers {
o.update();}
observerState = subject.getState();
ConcreteSubject
getState()
subjectState
ConcreteObserver
update()
observerState
subject
observers
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão ObserverAplicabilidade
� Use o Padrão Observer em Algumas das Situações:�Quando uma abstração apresenta dois aspectos, um
dependente do outro. Encapsulando estes aspectos em objetos separados permite que você os varie e reutilize de forma independente
�Quando uma modificação em um objeto requer modificação em outros, e você não sabe (em tempo de programação) quantos objetos precisam ser modificados
�Quando um objeto deve ser apto a notificar outros objetos sem saber quem são estes objetos. Em outras palavras, quando você os quer fracamente acoplados
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão ObserverConseqüências
�Variação independente de observáveis e observadores
�É fácil adicionar observadores sem modificar o observável ou os outros observadores
�Suporte a comunicação broadcast�Atualizações inesperadas (caso o processo
de notificação seja simplificado)
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão ObserverExercícios
� Veja a implementação do padrão observer nos componentes do pacote AWT
� Destaque as diferenças entre o padrão original e a implementação do AWT
-
State
State
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão State
� Intenção�Permite que um objeto altere seu comportamento quando seu estado
interno se modifica. O objeto parecerá ter mudado de classe.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StateEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StateAplicabilidade
� Use o Padrão State quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StateConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StateExercícios
-
Strategy
Strategy
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Strategy
� Intenção�Define uma família de algoritmos, encapsula cada um, e os faz inter-
cambiáveis. Permite que o algoritmo varie independentemente dos clientes que o utilizam.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StrategyEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StrategyAplicabilidade
� Use o Padrão Strategy quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StrategyConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão StrategyExercícios
-
Template Method
a() b()
a() b()
TemplateMethod()a(..);...b(..);
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Template Method
� Intenção�Define o esqueleto de um algoritmo através de uma operação,
deixando que subclasses refinem o restante do algoritmo. Permitem que subclasses redefinam certos aspectos de um algoritmo sem modificar a estrutura do algoritmo.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Template MethodEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Template MethodAplicabilidade
� Use o Padrão TemplateMethod quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Template MethodConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Template MethodExercícios
-
Visitor
Visitor Visitor Visitor
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão Visitor
� Intenção�Representa uma operação a ser executada sobre os elementos da
estrutura de um objeto. Visitantes possibilitam a definição de novas operações sem modificar as classes dos elementos sobre as quais ele atua.
� Motivação
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão VisitorEstrutura e Participantes
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão VisitorAplicabilidade
� Use o Padrão Visitor quando:
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão VisitorConseqüências
-
Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)
Padrão VisitorExercícios
-
State
Memento Adapter Proxy
Bridge
Command
Chain of Responsibility
Singleton
Abstract Factory
Prototype
Template Method
Facade
Factory Method
Observer
MediatorStrategy
Decorator
Flyweight
Composite
Interpreter
Visitor
Iterator
Builder
Uma Linguagem de Padrões para Programas OO
AdicionandoOperações
AdicionandoOperações
EnumerandoFilhos
SalvandoEstado da Operação
CriandoComposições
AdicionandoResponsabilidades
a Objetos
Modificando Peleversus Entranhas
CompartilhandoComposições
DefinindoGramática
DefinindoTravessias
Definindoa Cadeia
CompostoUsando
EvitandoHisterese
CompartilhandoEstratégias
CompartilhandoEstados Compartilhando
Terminais
ConfigurarFábrica
Dinamicamente
ÚnicaInstância
ÚnicaInstância
ImplementadaUsando
GerenciamentoComplexo deDependências
Freqüentemente Usa
DefinindoPassos doAlgoritmo
-
Fim
top related