Your SlideShare is downloading. ×
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Padroes de Projeto
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Padroes de Projeto

532

Published on

Principais Padrões de Projeto.

Principais Padrões de Projeto.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
532
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Padrões de Projeto _______________________________________Creational PatternsAbstract 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çõesBuilder 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. 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 criaPrototype 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. 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. Structural PatternsAdapter 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 paisBridge 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. 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 uniformeDecorator Anexa responsabilidades adicionais a um objeto dinamicamente. Decoradores fornecem uma alternativa flexível em relação à herança, para estender funcionalidades
  • 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 hierarquiaProxy 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. Behavioral PatternsStrategy 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. 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çõesObserver 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. 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

×