Você está na página 1de 10

Padres de Projeto _______________________________________

Creational Patterns
Abstract Factory Proporciona uma interface para criar famlias de objetos relacionados ou dependentes sem especificar suas classes concretas Use Abstract Factory quando: o O sistema deve ser independente de como seus produtos so criados, compostos e representados o O sistema deve ser configurado com uma de mltiplas famlias de produtos o Uma famlia de objetos de produtos relacionados projetada para ser usada junta, e voc precisa assegurar essa restrio o Voc quer proporcionar uma biblioteca de classes de produtos, e voc s quer revelar suas interfaces, no suas implementaes

Builder Separa a construo de um objeto complexo da sua representao, de forma que o mesmo processo de construo possa criar diferentes tipos de representaes Use o Builder quando: o O algoritmo para criar um objeto complexo deva ser independente das partes que constituem o objeto e de como ele montado o O processo de construo deva permitir representaes diferentes para o objeto que construdo

Factory Method Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. O Factory Method permite uma classe deferir a instanciao s subclasses Use Factory Method quando: o Uma classe no pode antecipar a classe de objetos que ela deve criar o Uma classe quer que suas subclasses especifiquem os objetos que ela cria

Prototype Especifica os tipos de objetos para criar usando uma instncia prototpica, e cria novos objetos copiando esse prottipo Use o Prototype quando/em: o As classes para serem instanciadas so especificadas em run-time, como por exemplo, por dynamic loading o Sistemas que utilizam o padro Abstract Factory para criao de objetos. Neste caso, a hierarquia de classes pode se tornar muito complexa e o

padro Prototype pode ser uma alternativa mais simples, por realizar a mesma tarefa com um nmero reduzido de classes; o Sistemas que possuem componentes cujo estado inicial possui poucas variaes e onde conveniente disponibilizar um conjunto pr-estabelecido de prottipos que do origem aos objetos que compem o sistema.

Singleton Garante que uma classe tem apenas uma instncia, e proporciona um ponto de acesso global a ela Use Singleton quando: o Deve haver exatamente uma instncia de uma classe, e ela deve ser acessvel aos clientes a partir de um ponto-de-acesso conhecido

Structural Patterns
Adapter Converte a interface de uma classe em outra interface que o cliente espera. Adapter permite que classes que normalmente nao poderiam trabalhar juntas, devido incompatibilidade de interfaces, possam faz-lo. Use o Adapter quando: o Voc quer usar uma classe existente, e sua interface no adequada quela que voc precisa o Voc quer criar uma classe reusvel que coopera com classes norelacionadas ou no-previstas, isto , classes que no necessariamente tm interfaces compatveis o Voc precisa usar vrias subclasses existentes, mas impraticvel adaptar suas interfaces especializando cada uma. Um object adapter pode adaptar a interface de suas classes pais

Bridge Desacopla uma interface de sua implementao, de forma que ela possa variar independentemente Use o Bridge quando: o Voc quer evitar um vnculo entre a abstrao e a implementao. Esse pode ser o caso, por exemplo, quando a implementao deve ser selecionada em tempo de execuo o Ambas a abstrao e a implementao devem ser estensveis atravs de subclasses o Mudanas na implementao de uma abstrao no deveriam ter impacto sobre os clientes, isto , seu cdigo no deveria ser recompilado

Composite Compe objetos em estruturas de rvore para representar hierarquias parte-todo. Composite deixa os clientes tratar objetos individuais e composies de objetos livremente Use Composite quando: o Voc quer representar hierarquias parte-todo de objetos o Voc quer que os clientes possam ignorar a diferena entre composies de objetos e objetos individuais. Clientes vo tratar os objetos na estrutura composta de forma uniforme

Decorator Anexa responsabilidades adicionais a um objeto dinamicamente. Decoradores fornecem uma alternativa flexvel em relao herana, para estender funcionalidades

Use o Decorator: o Para adicionar responsabilidades a objetos individuais dinmica e transparentemente, isto , sem afetar os outros objetos o Para responsabilidades que podem ser retiradas o Quando a extenso por subclasses impraticvel. Algumas vezes uma grande quantidade de combinaes de de subclasses possvel, causando uma exploso na hierarquia

Proxy Fornece um objeto representante ou um marcador de outro objeto para controlar o acesso ao mesmo Proxy aplicvel toda vez que h uma necessidade de uma referncia mais verstil ou sofisticada do que um simples ponteiro para um objeto Alguns tipos de proxy: o Remote proxy o Virtual proxy o Protection poxy o Smart reference

Behavioral Patterns
Strategy Define uma famlia de algoritmos, encapsula cada um, e faz deles intercambiveis. Strategy permite que o algoritmo varie independentemente de clentes que usam-no Use Strategy quando: o Vrias classes relacionadas diferem apenas em seus comportamentos. Strategy proporciona um modo de configurar uma classe com um de muitos comportamentos o Voc precisa de diferentes variantes de um algoritmo o Uma classe define muitos comportamentos, e eles aparecem como mltiplas declaraes condicionais nas suas operaes. Ao invs de vrias condies, mova desvios condicionais relacionados para sua propria classe Strategy

Command Encapsula uma requisio como um objeto, deixando-o, dessa forma, parametrizar os clientes com diferentes requisies Use o Command quando voc quer: o Parametrizar objetos para realizar alguma ao o Especificar, enfileirar e executar requisies em tempos diferentes o Suportar undo o Suportar transaes

Observer Define uma dependncia um-para-muitos entre objetos de forma que quando um objeto muda de estado, todos os seus dependentes so notificados e atualizados automaticamente Use o Observer em qualquer uma das seguintes situaes: o Quando uma abstrao tem dois aspectos, um dependente do outro. Encapsular esses aspectos em objetos separados permite voc vari-los e us-los independentemente o Quando uma mudana em um objeto requer mudanas em outros objetos e voc no sabe quantos objetos sero mudados o Quando um objeto deve ser capaz de notificar outros objetos sem fazer dedues sobre quem esses objetos so. Em outras palavras, voc no quer esses objetos fortemente acoplados

Template Method Define o esqueleto de um algoritmo em uma operao, deferindo alguns passos para as subclasses. Template Method permite que subclasses redefinam certos passos de algum algoritmo sem mudar a estrutura do algoritmo O Template Method deve ser usado: o Para implementar a parte invariante de um algoritmo uma vez e deixar para as subclasses a implementao do comportamento que pode variar o Quando comportamentos comuns entre subclasses devem ser fatorados e localizados em uma classe comum para evitar duplicao de cdigo

Você também pode gostar