O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Padroes de Projeto

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Padrões de Projeto
       _______________________________________
Creational Patterns

Abstract Factory
      Proporciona ...
Factory Method
      Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual
      classe instan...
padrão Prototype pode ser uma alternativa mais simples, por realizar a
           mesma tarefa com um número reduzido de c...
Anúncio
Anúncio
Próximos SlideShares
Quick reference
Quick reference
Carregando em…3
×

Confira estes a seguir

1 de 10 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Padroes de Projeto (20)

Anúncio

Padroes de Projeto

  1. 1. Padrões de Projeto _______________________________________ Creational Patterns Abstract Factory Proporciona uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas Use Abstract Factory quando: o O sistema deve ser independente de como seus produtos são criados, compostos e representados o O sistema deve ser configurado com uma de múltiplas famílias de produtos o Uma família de objetos de produtos relacionados é projetada para ser usada junta, e você precisa assegurar essa restrição o Você quer proporcionar uma biblioteca de classes de produtos, e você só quer revelar suas interfaces, não suas implementações Builder Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes tipos de representações 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 construção deva permitir representações diferentes para o objeto que é construído
  2. 2. 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 instanciação às subclasses Use Factory Method quando: o Uma classe não 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 instância prototípica, e cria novos objetos copiando esse protótipo Use o Prototype quando/em: o As classes para serem instanciadas são especificadas em run-time, como por exemplo, por dynamic loading o Sistemas que utilizam o padrão Abstract Factory para criação de objetos. Neste caso, a hierarquia de classes pode se tornar muito complexa e o
  3. 3. padrão Prototype pode ser uma alternativa mais simples, por realizar a mesma tarefa com um número reduzido de classes; o Sistemas que possuem componentes cujo estado inicial possui poucas variações e onde é conveniente disponibilizar um conjunto pré-estabelecido de protótipos que dão origem aos objetos que compõem o sistema. Singleton Garante que uma classe tem apenas uma instância, e proporciona um ponto de acesso global a ela Use Singleton quando: o Deve haver exatamente uma instância de uma classe, e ela deve ser acessível aos clientes a partir de um ponto-de-acesso conhecido
  4. 4. 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 não é adequada àquela que você precisa o Você quer criar uma classe reusável que coopera com classes não- relacionadas ou não-previstas, isto é, classes que não necessariamente têm interfaces compatíveis o Você precisa usar várias subclasses existentes, mas é impraticável adaptar suas interfaces especializando cada uma. Um object adapter pode adaptar a interface de suas classes pais Bridge Desacopla uma interface de sua implementação, de forma que ela possa variar independentemente Use o Bridge quando: o Você quer evitar um vínculo entre a abstração e a implementação. Esse pode ser o caso, por exemplo, quando a implementação deve ser selecionada em tempo de execução o Ambas a abstração e a implementação devem ser estensíveis através de subclasses o Mudanças na implementação de uma abstração não deveriam ter impacto sobre os clientes, isto é, seu código não deveria ser recompilado
  5. 5. Composite Compõe objetos em estruturas de árvore para representar hierarquias parte-todo. Composite deixa os clientes tratar objetos individuais e composições de objetos livremente Use Composite quando: o Você quer representar hierarquias parte-todo de objetos o Você quer que os clientes possam ignorar a diferença entre composições de objetos e objetos individuais. Clientes vão tratar os objetos na estrutura composta de forma uniforme Decorator Anexa responsabilidades adicionais a um objeto dinamicamente. Decoradores fornecem uma alternativa flexível em relação à herança, para estender funcionalidades
  6. 6. Use o Decorator: o Para adicionar responsabilidades a objetos individuais dinâmica e transparentemente, isto é, sem afetar os outros objetos o Para responsabilidades que podem ser retiradas o Quando a extensão por subclasses é impraticável. Algumas vezes uma grande quantidade de combinações de de subclasses é possível, causando uma explosão na hierarquia Proxy Fornece um objeto representante ou um marcador de outro objeto para controlar o acesso ao mesmo Proxy é aplicável toda vez que há uma necessidade de uma referência mais versátil 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
  7. 7. Behavioral Patterns Strategy Define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis. Strategy permite que o algoritmo varie independentemente de clentes que usam-no Use Strategy quando: o Várias 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 múltiplas declarações condicionais nas suas operações. Ao invés de várias condições, mova desvios condicionais relacionados para sua propria classe Strategy
  8. 8. Command Encapsula uma requisição como um objeto, deixando-o, dessa forma, parametrizar os clientes com diferentes requisições Use o Command quando você quer: o Parametrizar objetos para realizar alguma ação o Especificar, enfileirar e executar requisições em tempos diferentes o Suportar undo o Suportar transações Observer Define uma dependência um-para-muitos entre objetos de forma que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente Use o Observer em qualquer uma das seguintes situações: o Quando uma abstração tem dois aspectos, um dependente do outro. Encapsular esses aspectos em objetos separados permite você variá-los e usá-los independentemente o Quando uma mudança em um objeto requer mudanças em outros objetos e você não sabe quantos objetos serão mudados o Quando um objeto deve ser capaz de notificar outros objetos sem fazer deduções sobre quem esses objetos são. Em outras palavras, você não quer esses objetos fortemente acoplados
  9. 9. Template Method Define o esqueleto de um algoritmo em uma operação, 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 implementação do comportamento que pode variar o Quando comportamentos comuns entre subclasses devem ser fatorados e localizados em uma classe comum para evitar duplicação de código

×