Você está na página 1de 10

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

Você também pode gostar