Você está na página 1de 82

Padres Comportamentais

Formulrio para Descrio de Padres


Nome e Classificao Inteno Tambm Conhecido Como Motivao Aplicabilidade Estrutura Participantes Colaboradores Conseqncias Implementao Exemplo de Cdigo Usos Conhecidos Padres Relacionados

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Notao de Classes e Objetos


ClasseAbstrata operaoAbstrata() referencia objeto agrega cria um muitos ClasseConcreta

SubclasseConcreta1 operao() varivelDeInstncia

SubclasseConcreta2 pseudo cdigo

umObjeto refernciaAObjeto

outroObjeto varivelDeInstncia

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Diagrama de Interao de Objetos


umObjeto outroObjeto

operao ativa sobre o objeto

outroObjeto = new Objeto() (instanciao) outroObjeto.mtodo() this.mtodo()

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

TEMPO

Padres Comportamentais(1/2)
Tratam de algoritmos e como atribuir responsabilidades entre objetos Interpreter ChainOf Command Responsibility
new

exec exec()
a

&

*
|

Iterator Mediator Memento

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais(2/2)
Tratam de algoritmos e como atribuir responsabilidades entre objetos State Strategy Observer(s)

30%, 20%, 50% 10%, 60%

TemplateMethod() a()
a() b()

Visitor Visitor Visitor

b()

a(..); ... b(..);

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais
Enquanto se concentram apenas na forma como os objetos so conectados, criam complexos fluxos de controle que so difceis de seguir em runtime. De Classe
baseados no uso de herana

De Objeto
baseados no uso de composio
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais
Chain of Responsibility - Encadeamento de Atendentes Command - Comando Interpreter Interpretador Iterator - Iterador Mediator - Mediador Memento - Lembrana Observer - Observador State - Estado Strategy - Estratgia Template Method Esqueleto de Mtodo Visitor - Visitante

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres 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 solicitao. Encadeia os atendentes e passa a solicitao atravs desta cadeia at que algum deles a trate.

Command - Comando (Objeto) Encapsula uma solicitao no


interior de um objeto, permitindo que se parametrize clientes com diferentes solicitaes, filas ou registros de solicitaes, suportando ainda o cancelamento de solicitaes.

Interpreter - Interpretador (Classe) Dada uma linguagem,


cria uma representao para a gramtica da linguagem, juntamente com um interpretador que utilizar esta representao para interpretar sentenas na linguagem.
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais
Iterator - Iterador (Objeto) Prov uma forma de acessar
seqencialmente os elementos de um agregado de objetos, sem expor a representao 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 interao entre eles de modo independente.

Memento - Lembrana (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.
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais
Observer - Observador (Objeto) Define uma dependncia 1para-n entres objetos, de modo que quando o estado de um objeto alterado todos seus dependentes so 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 - Estratgia (Objeto) Define uma famlia de


algoritmos, encapsula cada um, e os faz inter-cambiveis. Permite que o algoritmo varie independentemente dos clientes que o utilizam.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padres Comportamentais
Template Method - Esqueleto de Mtodo (Classe)
Define o esqueleto de um algoritmo atravs de uma operao, 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 operao a ser


executada sobre os elementos da estrutura de um objeto. Visitantes permitem que se definam novas operaes sem modificar as classes dos elementos sobre as quais ele atua.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Chain of Responsibility

ChainOf Responsibility

Padro Chain of Responsibility


Inteno
Evita acoplamento entre solicitantes e atendentes permitindo que mais de um objeto tenha chance de tratar da solicitao. Encadeia os atendentes e passa a solicitao atravs desta cadeia at que algum deles a trate.

Motivao
Considere, por exemplo, a construo de um conjunto de helps (auxlios) em uma GUI. Suponha que o usurio possa obter auxlio a partir de qualquer parte da interface pressionnando, F1. O help deve ento ser sensvel ao contexto onde foi ativado. Nestes casos torna-se natural criar vrios nveis de auxlio, se aplicando da situao mais especfica mais geral. Quando o contexto mais especfico no dispuser de auxlio, o contexto de auxlio imediatamente superior deve ser ativado. A idia do padro facilitar o desacoplamento entre o solicitante (boto onde foi invocado o help) e o atendente (janela de help ativada)
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Chain of Responsibility Estrutura e Participantes

successor Client Handler handleRequest()

ConcreteHandler1 handleRequest()

ConcreteHandler2 handleRequest()

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Chain of Responsibility


Aplicabilidade
Use o Padro quando:
Mais de um objeto pode tratar de um pedido, e o tratador de pedidos (handler) no conhecido a priori. O handler deve ser buscado automaticamente de forma ascendente. Voc quer emitir um pedido para um de vrios objetos sem especificar o recebedor de forma explcita. O conjunto de objetos que pode tratar de um pedido deve ser configurado dinamicamente.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Chain of Responsibility


Conseqncias
Acoplamento reduzido
Evita que um objeto (client) seja forado a tomar conhecimento do outro (handler) O objeto s precisa saber que o pedido foi tratado apropriadamente A estrutura da cadeia no precisa ser conhecida

Flexibilidade na atribuio de responsabilidades para objetos (subclasses, alterao dinmica da cadeia) Sucesso no tratamento do pedido no garantido

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Chain of Responsibility Exerccios


Observe os trechos de cdigo das prximas 2 pginas e veja como funciona a Chain of Responsibility do tratamento de eventos no AWT 1.0. Veja tambm detalhes do cdigo fonte das classes Component
Mtodo handleEvent() e suas vrias ramificaes.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

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

new

Command exec exec()

Padro Command
Inteno
Encapsula uma solicitao no interior de um objeto, permitindo que se parametrize clientes com diferentes solicitaes, filas ou registros de solicitaes, suportando ainda o cancelamento de solicitaes.

Motivao
Algumas vezes necessrio se fazer uma solicitao de servio sem conhecimento algum do tipo de operao que est sendo requerida. Na construo de um menu, por exemplo. O padro Command permite que um menu possa solicitar execuo de pedidos sem conhecer a natureza destes pedidos, pois o prprio objeto encapsula os detalhes da execuo do pedido.
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Command Estrutura e Participantes

Client

Invoker

Command execute()

Receiver action()

receiver

ConcreteCommand execute() state receiver.action();

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Command
Colaboraes
aCommand = new Command

aReceiver

aClient

aCommand

anInvoker

StoreCommand(aCommand)

execute() action()

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Command
Aplicabilidade
Parametrizar objetos com uma ao a executar.
Tal parametrizao pode ser feita com funes de callback em linguagens imperativas. Comandos so um substituto orientado a objetos para callbacks.

Especificar, armazenar e executar pedidos em momentos diferentes. Suportar undo

Commands podem ser transferidos entre espaos de endereamento e mquinas. A operao execute pode armazenar o estado para reverter os efeitos do prprio comando. Atravs da incluso de undoable Commands em meio persistente.

Suportar logs de modificaes

Estruturar um sistema em torno de operaes de alto nvel


Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Constitudas internamente por vrias operaes primitivas. Facilidades para extenso do sistema.

Padro Command
Conseqncias
Desacoplamento do objeto que invoca uma operao, do outro que executa esta operao Comandos so objetos, e como tal podem ser manipulados e refinados. Comandos podem ser compostos, criando MacroCommands fcil criar novos comandos.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Command
Exerccios
Veja a capacidade de suporte implementao dinmica do padro Command dentro dos pacotes java.lang e http://padct01:2001/java/lang/Object.html java.lang.reflect
Class java.lang.Class
Method[] getMethods();

Classe java.lang.reflect.Method
Object invoke(Object target, Object[] args);

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Interpreter

Interpreter
& a

*
| b c

Padro Interpreter
Inteno
Dada uma linguagem, cria uma representao para a gramtica da linguagem, juntamente com um interpretador que utilizar esta representao para interpretar sentenas na linguagem.

Motivao
Quando uma estrutura de problema particular ocorre vrias vezes, pode ser interessante represent-la atravs de uma sentena em uma linguagem simples, de modo a solucionar o problema atravs da construo de um interpretador para esta sentena. Em vrias destas situaes, em vez de construir algoritmos de interpretao manualmente, um interpretador genrico de expresses regulares pode solucionar o problema rapidamente. O padro Interpreter usa classes para representar cada regra de uma gramtica (expresso regular).
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Interpreter
Aplicabilidade
Use o Padro quando:
A gramtica simples
Para gramticas complexas a hierarquia de classes se torna difcil de gerenciar. Neste caso, geradores de parsers so uma alternativa melhor.

Eficincia no uma questo crtica


Cdigo intermedirio permite maior eficincia Expresses podem ser traduzidas para mquinas de estado finito Neste casos, o tradutor pode ser criado atravs de um interpreter

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Interpreter
Conseqncias
fcil modificar e estender a gramtica Implementar a gramtica tambm fcil Gramticas complexas so difceis de manter Adicionar novas formas de interpretar expresses simples

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Iterator

Iterator

Padro Iterator (Cursor)


Inteno
Prov uma forma de acessar seqencialmente os elementos de um agregado de objetos, sem expor a representao interna deste agregado.

Motivao
Objetos agregados como listas, tabelas hash, dicionrios, etc, devem permitir que se acessem seus elementos de modo abstrato, sem que a representao interna de sua estrutura seja exposta Eventualmente tambm pode se desejar fazer duas travessias concorrentes sobre um mesmo objeto agregado. O padro Iterator permite a criao de tais facilidades.
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Iterator Estrutura e Participantes


Aggregate createIterator() Client Iterator first() next() isDone() currentItem()

ConcreteAggregate createIterator()

ConcreteIterator

Return new ConcreteIterator(this);


Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Iterator
Aplicabilidade
Use o Padro Iterator quando:
Se deseja acessar o contedo de um objeto agregado sem expor sua representao interna Se deseja suportar mltiplas travessias de um objeto agregado Se quer prover uma interface uniforme para atravessar diferentes estruturas agregadas. Suportar iterao polimrfica

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Iterator
Conseqncias
Suporte a variaes na maneira de se atravessar um objeto agregado (pre-order, ps-ordem, em-ordem) Simplificao da interface do agregado Mais de um cursor pendente sobre um agregado

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Iterator Exerccios


Observar o uso de agregados no pacote java.util.
JDK 1.1 - Hashtable, Vector, Enumeration JDK 1.2 - Collection, Iterator
IMPLEMENTAES - JDK 1.2 Hash Table Resizable Array Balanced Tree Linked List INTERFACES Set List Map HashMap HashSet ArrayList TreeMap TreeSet LinkedList

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Mediator

Mediator

Padro Mediator
Inteno
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 interao entre eles de modo independente.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Mediator Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Mediator
Aplicabilidade
Use o Padro Mediator quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Mediator
Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Mediator Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Memento

Memento

Padro Memento
Inteno
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.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Memento Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Memento
Aplicabilidade
Use o Padro Memento quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Memento
Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Memento Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Observer

Observer(s)

30%, 20%, 50% 10%, 60%

Padro Observer
Inteno
Define uma dependncia 1-para-n entres objetos, de modo que quando o estado de um objeto alterado todos seus dependentes so notificados e atualizados automaticamente.

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Observer Motivao


Suponha que voc deseja fornecer vrias vises distintas de um mesmo objeto que funciona como um repositrio de dados Cada viso criada por um objeto observador independente Caso cada observador seja diretamente conectado ao repositrio, isto criar uma dependncia do repositrio com relao aos diferentes observadores, o que lhe reduzir a reusabilidade e flexibilidade O padro Observer descreve uma forma de manuteno destes relacionamentos de modo que observadores e repositrios sejam facilmente Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br) substitudos Padres de Design Orientados a Objetos. Copyright 1999, 2003.

Padro Observer Estrutura e Participantes


Subject attach(Observer) detach(Observer) notify() observers Observer update() For all o in observers { o.update(); } subject return subjectState ConcreteObserver update() observerState observerState = subject.getState();
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

ConcreteSubject getState() subjectState

Padro Observer
Aplicabilidade
Use o Padro Observer em Algumas das Situaes:
Quando uma abstrao 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 modificao em um objeto requer modificao em outros, e voc no sabe (em tempo de programao) quantos objetos precisam ser modificados Quando um objeto deve ser apto a notificar outros objetos sem saber quem so estes objetos. Em outras palavras, quando voc os quer fracamente acoplados

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Observer
Conseqncias
Variao independente de observveis e observadores fcil adicionar observadores sem modificar o observvel ou os outros observadores Suporte a comunicao broadcast Atualizaes inesperadas (caso o processo de notificao seja simplificado)
Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Observer Exerccios


Veja a implementao do padro observer nos componentes do pacote AWT Destaque as diferenas entre o padro original e a implementao do AWT

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

State

State

Padro State
Inteno
Permite que um objeto altere seu comportamento quando seu estado interno se modifica. O objeto parecer ter mudado de classe.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro State Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro State
Aplicabilidade
Use o Padro State quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro State

Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro State Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Strategy

Strategy

Padro Strategy
Inteno
Define uma famlia de algoritmos, encapsula cada um, e os faz intercambiveis. Permite que o algoritmo varie independentemente dos clientes que o utilizam.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Strategy Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Strategy
Aplicabilidade
Use o Padro Strategy quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Strategy
Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Strategy Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Template Method

TemplateMethod() a()
a() b()

b()

a(..); ... b(..);

Padro Template Method


Inteno
Define o esqueleto de um algoritmo atravs de uma operao, deixando que subclasses refinem o restante do algoritmo. Permitem que subclasses redefinam certos aspectos de um algoritmo sem modificar a estrutura do algoritmo.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Template Method Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Template Method


Aplicabilidade
Use o Padro TemplateMethod quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Template Method


Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Template Method Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Visitor

Visitor Visitor Visitor

Padro Visitor
Inteno
Representa uma operao a ser executada sobre os elementos da estrutura de um objeto. Visitantes possibilitam a definio de novas operaes sem modificar as classes dos elementos sobre as quais ele atua.

Motivao

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Visitor Estrutura e Participantes

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Visitor
Aplicabilidade
Use o Padro Visitor quando:

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Visitor
Conseqncias

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Padro Visitor Exerccios

Padres de Design Orientados a Objetos. Copyright 1999, 2003. Jorge H. C. Fernandes. (jorgehcfernandes@uol.com.br)

Uma Linguagem de Padres para Programas OO


Builder
Criando Composies Adicionando Responsabilidades a Objetos Salvando Estado da Operao

Memento
Definindo Travessias Evitando Histerese Composto Usando

Adapter

Proxy

Iterator
Enumerando Filhos

Bridge Command

Composite
Compartilhando Composies Adicionando Operaes Definindo Gramtica

Decorator
Modificando Pele versus Entranhas

Visitor
Adicionando Operaes

Definindo a Cadeia

Flyweight

Strategy

Compartilhando Estratgias Compartilhando Estados Definindo Passos do Algoritmo

Interpreter
Compartilhando Terminais

Chain of Responsibility
Gerenciamento Complexo de Dependncias

Mediator Observer

State
Configurar Fbrica Dinamicamente

Template Method

Prototype

Freqentemente Usa Implementada Usando

nica Instncia

Abstract Factory
nica Instncia

Factory Method

Singleton

Facade

Fim

Você também pode gostar