padrões de desenho java

Upload: monica-alves

Post on 17-Oct-2015

132 views

Category:

Documents


0 download

DESCRIPTION

Um resumo sobre os padrôes de desenho mais comuns em java

TRANSCRIPT

  • Composite

    Problema: Pretende-se criar maneira de agrupar objectos num s ... possibilidade de interagir com um objecto ou um objecto composto de vrios, independentemente do caso. Quando se pretendem representar hierarquias parte-todo. Soluo: A ideia ter um objecto que agrega outro; podendo este ser uma composio ou um objecto simples. Cria uma estrutura do tipo rvore. Estrutura: Vantagens:

    Cliente manipula objectos que podem ser composies ou objectos primitivos. Trata-os de forma uniforme

    A composio feita recursivamente sem influncia do cliente. Facilidade na insero de elementos novos visto que o cliente manipula

    um elemento genrico. Desvantagens:

    Desenho pode ser demasiadamente geral o que pode trazer problemas se quiser impor restries aos elementos das composies.

  • Strategy

    Problema: Definir uma famlia de algoritmos. Poder escolher qual o algoritmo que vamos usar para efectuar determinada operao. Adicionar algoritmos para resoluo do problema. Soluo: A ideia separar a implementao do algoritmo do cliente. So efectuadas as implementaes dos algoritmos em classes Strategy diferentes. Ambas tem uma interface comum. O cliente mantm uma referencia para cada maneira de resolver o problema (Strategy). Quando necessrio efectuar uma operao invocado a Strategy desejada. Estrutura:

    Vantagens:

    Atravs de herana pode-se factorizar os vrios algoritmos agrupando o que comum.

    O algoritmo pode variar independentemente do contexto. Muito fcil a comutao de algoritmo e possvel extenso. Eliminam as instrues condicionais implicitas no cdigo. Fornece-se vrias solues para o mesmo problema sendo o cliente o

    seleccionador. Desvantagens:

    Os clientes ficam inerentes implementao. Tm que conhecer os algoritmos em causa S se deve utilizar quando realmente significativo para os clientes Podem ser criadas strategies que nunca vo ser utilizadas por parte do

    cliente o que aumenta o numero de objectos criados.

  • Decorator

    Problema: Adicionar responsabilidades a um objecto dinamicamente. Soluo: A ideia incluir a responsabilidade noutro objecto ao qual chamamos decorator. O decorador tem uma interface semelhante ao objecto para que se possa comportar como ele. Este reencaminha os pedidos ao objecto e efectua as suas tarefas. Estrutura:

    Vantagens:

    A transparncia permite garantir a imposio de um numero ilimitado de novas responsabilidades.

    Muito fcil remover ou atribuir responsabilidades em run-time. Adio de uma propriedade duas vezes. Ex: duas bordas. No necessrio fazer uma classe para suportar todas as hipoteses e

    combinaes possveis. Estes objectos so uma capa para os objectos reais usados apenas

    para mudar o comportamento. Desvantagens:

    Um decorador no um objecto da classe que decora mas sim um

    objecto que contem um elemento da classe que decora.

  • Abstract Factory

    Problema: Providenciar uma interface para criar famlias de objectos relacionados entre si sem necessidade de especificar as clases concretas. Soluo: Definir uma classe abstracta que define a interface para criar cada um dos tipos, uma classe abstracta por cada tipo, com subclasses concretas para cada tipo de sistema. Estrutura:

    Vantagens:

    Isola as classes concretas, separa os clientes da implementao das classes.

    Facilita a troca de famlias de produtos. Promove a consistncia entre famlias de produtos.

    Desvantagens:

    difcil suportar novos tipos de famlias de produtos, visto ser preciso alterar a interface AbstractFactory.

  • Bridge

    Problema: Separar a abstraco da sua implementao para que cada uma possa variar independentemente. Soluo: Separar as hierarquias de classes (abstraces e implementaes especficas). Todas as operaes ds subclasses so implementadas recorrendo s operaes abstractas. Chama-se bridge ao relacionamento entre as abstraces e as implementaes. Estrutura:

    Vantagens:

    Separa interface e implementao, eleminando dependncias de compilao.

    Melhora a extensibiliade Esconde detalhes da implementao aos clientes

    Desvantagens:

    Parece que no h... ou ento no J

  • Command

    Problema: Transformar um pedido num objecto. Filas de espera, lista de pedidos. Anular operaes previamente executadas. Soluo: Transformar pedidos em objectos. Estes pedidos (objectos) podem ser memorizados e enviados a outros objectos. Estrutura:

    Vantagens:

    Separa o objecto que invoca a operao do que sabe executar essa operao

    Os comandos so objectos, que podem ser manipulados e estendidos Podem ser agregados em comandos compostos Facilita introduo de novos comandos Os comandos podem fazer a ligao entre o receptor e as aces ou

    podem fazer logo tudo Suportam redo e undo visto que pode haver um metodo que indique

    como desfeito ou refeito aquele comando. Desvantagens:

    Parece que no h... ou ento no J

  • Template Method

    Problema: Definir o esqueleto de um algoritmo, deixando a especificao de alguns passos para as sub-classes Soluo: Factorizar as partes comuns num template. Definir o que pode ser alterado na mesma template. As extenses template tm de definir o que no ficou especificado. Estrutura:

    Vantagens:

    Permite factorizar partes comuns Implementa um sistema de controlo, no qual a classe de base que

    chama as classes derivadas Desvantagens:

    Parece que no h... ou ento no J

  • Observer

    Problema: Definir dependncias entre objectos do tipo um-para-muitos. Quando o objecto altera o seu estado, todos os objectos dependentes so notificados para poderem agir em conformidade Soluo: Um sujeito pode ter vrios observadores Estrutura:

    Vantagens:

    Permite variar Observers e Subjects de modo independente Permite adicionar Observers sem modificar o Observable ou outros

    Observers A ligao entre elementos observaveis e observadores abstracta. O observvel s conhece a classe abstracta Observer. Podendo este

    variar de vrias formas ( polimorfismo ) Permite comunicao broadcast que verifica o protocolo distribuio de

    mensagens por todos os observers. Desvantagens:

    A alterao do elemento observavel pode ter custos elevados. Uma operao bsica pode dar em muitas alteraes suprfluas.

  • Memento

    Problema : Queremos ter a possibilidade de mudar o estado de um objecto sem violar o encapsulamento, sendo necessrio transportar o estado para fora do objecto sendo possvel repor. Soluo: Guardar o estado interno num objecto (Memento)

    S o objecto original pode aceder ao seu memento. Quem manipula o Originator tem a responsabilidade de guardar os

    possveis estados que lhe interessam e depois recorrendo ao originator , sim decidir restaurar qualquer dos estados anteriores. Estrutura:

    Vantagens:

    Preserva os limites do encapsulamento, evitando a divulgao de informao s referente e privada ao Originator.

    Simplifica o originator Desvantagens:

    O uso de mementos pode ser dispendioso em termos de estruturas de dados repetidas. Se o estado for muito complexo requere a repetio da mesma estrutura para o memento.

    Pode ser dificil garantir que s o Originator acede ao seu memento visto que estes so geridos pela aplicao (caretaker).

    A gesto dos mementos pode ser dificil visto que o caretaker no conhece o seu conteudo, e pode remover estados antigos que depois lhe interessem.

  • State

    Problema : Queremos ter a possibilidade de mudar de comportamento consoante o estado interno de um objecto. Exemplo temos o caso de um diagrama de estados. Consoante o estado onde estamos temos comportamentos diferentes. Soluo: Representa-se cada estado com um objecto. Quando um objecto quer alterar o seu comportamento, muda de estado. ( troca de objecto) No Estado define-se o comportamento do objecto quando aquele estado o activo.

    Estrutura:

    Vantagens:

    Localiza num objecto estado o comportamento especifico aquele estado. As mudanas de estado so explicitas Pode-se partilhar estados. Perca de instrues condicionais verificando qual o estado actual para

    atingir determinado comportamento

    Desvantagens:

    Parece que no h... ou ento no J

    PSDR e SFBS @ LEIC @ IST 2003