Apresentação Introdução Design Patterns

1.510 visualizações

Publicada em

Publicada em: Tecnologia, Diversão e humor
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.510
No SlideShare
0
A partir de incorporações
0
Número de incorporações
81
Ações
Compartilhamentos
0
Downloads
46
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação Introdução Design Patterns

  1. 1. Design Patterns Prof. Lucas Simões Maistro [email_address] http://www.twitter.com/lucas_simoes http://blogdopiruca.wordpress.com/
  2. 2. Desafios da Área de Software <ul><li>Sistemas estão se tornando maiores e com aplicações mais complexas </li></ul><ul><li>As empresas esperam </li></ul><ul><ul><li>Menos bugs </li></ul></ul><ul><ul><li>Mais rapidez de desenvolvimento </li></ul></ul><ul><li>Diferentes técnicas podem ajudar a atingir esse objetivo </li></ul><ul><li>Design Patterns é uma delas </li></ul>
  3. 3. Design Patterns - Introdução <ul><li>Média de 50 bugs a cada 1000 linhas de código em produção (não é código beta ou em desenvolvimento é PRODUÇÃO) </li></ul><ul><li>Microsoft conseguiu atingir 0,5 defeitos a cada 1000 linhas </li></ul><ul><ul><li>XP contém 40-50 milhões de linhas (entre 20 e 25mil bugs, é muita coisa) </li></ul></ul><ul><ul><li>.Net usa diversos design patterns </li></ul></ul><ul><ul><li>O time de Patterns & Practices trabalha com integração de design patterns </li></ul></ul><ul><ul><ul><li>www.microsoft.com/practices </li></ul></ul></ul>
  4. 4. Design Patterns - Introdução <ul><li>Coleção de soluções </li></ul><ul><li>Utilizadas anteriormente por especialistas em grande escala para a solução de problemas comuns </li></ul><ul><li>Padrões são como uma caixa de ferramentas </li></ul><ul><li>Estudamos padrões para facilitar o dia-a-dia do desenvolvimento </li></ul><ul><li>O padrão surge naturalmente </li></ul>
  5. 5. Design Patterns - Introdução <ul><li>Origem na Engenharia Civil </li></ul><ul><li>Criação de catálogos para Arquitetura </li></ul><ul><li>Em 1978, Christopher lança seu livro com o nome &quot;A Pattern Language&quot; onde são feitas definições de padrão de projeto </li></ul>
  6. 6. Design Patterns - Introdução <ul><li>A partir desta definição, profissionais da área de softwares passaram a utilizar esses princípios para a criação das primeiras documentações de padrões de projetos para ser utilizados como uma espécie de guia para novos desenvolvedores. </li></ul><ul><li>Em 1995, Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides - (gang of four - GoF), publicam o livro &quot;Design Patterns: Elements of Reusable Object-Oriented Software&quot;, onde os autores descrevem 23 padrões baseados em suas experiências e que, ainda hoje é a principal referência no assunto. </li></ul>
  7. 7. Design Patterns - Introdução <ul><li>Template de um Design Pattern </li></ul><ul><ul><li>Nome Padrão [Descreve a essência do padrão em um curto e expressivo nome]. </li></ul></ul><ul><ul><li>Objetivo [Descreve o que o padrão faz]. </li></ul></ul><ul><ul><li>Também Conhecido Como [Lista de sinônimos para o padrão]. </li></ul></ul><ul><ul><li>Motivação [Fornece um exemplo de um problema e como o padrão resolve aquele problema]. </li></ul></ul><ul><ul><li>Aplicabilidade [Lista as situações onde o padrão é aplicado]. </li></ul></ul><ul><ul><li>Estrutura [Conjunto de diagramas de classes e objetos que descrevem o padrão]. </li></ul></ul>
  8. 8. Design Patterns - Introdução <ul><li>Template de um Design Pattern – Cont. </li></ul><ul><ul><li>Participantes [Descreve as classes e objetos que participam do design pattern e suas responsabilidades]. </li></ul></ul><ul><ul><li>Colaborações [Descreve como os participantes colaboram para cumprir com suas responsabilidades]. </li></ul></ul><ul><ul><li>Conseqüências [Descreve os benefícios e os custos da utilização do padrão] </li></ul></ul>
  9. 9. Design Patterns - Introdução <ul><li>Os Design Patterns GoF estão divididos em: </li></ul><ul><ul><li>Padrões de Criação: relacionados ao processo de criação dos objetos </li></ul></ul><ul><ul><li>Padrões de Estrutura: relacionados com a composição de objetos </li></ul></ul><ul><ul><li>Padrões de Comportamento: relacionados com a forma como objetos interagem e distribuem o trabalho </li></ul></ul>
  10. 10. Design Patterns - Introdução <ul><li>Padrões de Criação (Creational Patterns) </li></ul><ul><ul><li>Abstract Factory - Um método Factory é um método que fabrica objetos de um tipo particular; Um objeto Factory é um objeto que encapsula métodos Factory. </li></ul></ul><ul><ul><li>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 representações. </li></ul></ul><ul><ul><li>Factory Method - É uma interface para instanciação de objetos que mantém isoladas as classes concretas usadas da requisição da criação destes objetos. </li></ul></ul><ul><ul><li>Prototype - O padrão Prototype fornece uma outra maneira de se construir objetos de tipos arbitrários. </li></ul></ul><ul><ul><li>Singleton - Garante que para uma classe específica só possa existir uma única instância, a qual é acessível de forma global e uniforme. </li></ul></ul>
  11. 11. Design Patterns - Introdução <ul><li>Padrões de Estrutura (Structural Patterns) </li></ul><ul><ul><li>Adapter - Permite que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis. </li></ul></ul><ul><ul><li>Bridge - Desacopla a interface da implementação; Ocultação de detalhes de implementação dos clientes. </li></ul></ul><ul><ul><li>Composite - lida com uma estrutura de elementos agrupada hierarquicamente (não como meras coleções). </li></ul></ul><ul><ul><li>Decorator - Atribui responsabilidades adicionais a um objeto dinamicamente. O Decorator fornece uma alternativa flexível a subclasses para a extensão da funcionalidade. </li></ul></ul><ul><ul><li>Facade - Interface unificada para um subsistema ; Torna o subsistema mais fácil de usar. </li></ul></ul><ul><ul><li>Flyweight - Usa compartilhamento para dar suporte a vários objetos de forma eficiente. </li></ul></ul><ul><ul><li>Proxy - Fornece um objeto representante ou procurador de outro objeto para controlar o acesso ao mesmo. </li></ul></ul>
  12. 12. Design Patterns - Introdução <ul><li>Padrões de Comportamento ( Behavioural Patterns ) </li></ul><ul><ul><li>Chain of Responsability - Evita dependência do remetente(cliente) de uma requisição ao seu destinatário, dando a oportunidade de mais de um objeto tratar a requisição. </li></ul></ul><ul><ul><li>Command - Associa uma ação a diferentes objetos através de uma interface conhecida. </li></ul></ul><ul><ul><li>Interpreter - Usado para ajudar uma aplicação a entender uma declaração de linguagem natural e executar a funcionalidade da declaração. </li></ul></ul><ul><ul><li>Iterator - Provê uma forma de percorrermos os elementos de uma coleção sem violar o seu encapsulamento. </li></ul></ul><ul><ul><li>Mediator - Cria um objeto que age como um mediador controlando a interação entre um conjunto de objetos. </li></ul></ul><ul><ul><li>Memento - Torna possível salvar o estado de um objeto de modo que o mesmo possa ser restaurado. </li></ul></ul>
  13. 13. Design Patterns - Introdução <ul><li>Padrões de Comportamento ( Behavioural Patterns ) Cont. </li></ul><ul><ul><li>Observer - Define uma relação de dependência 1:N de forma que quando um certo objeto (assunto) tem seu estado modificado os demais (observadores) são notificados; Possibilita baixo acoplamento entre os objetos observadores e o assunto. </li></ul></ul><ul><ul><li>State - Permite objeto alterar seu comportamento quando estado interno muda. </li></ul></ul><ul><ul><li>Strategy - Permite que uma família de algoritmos seja utilizada de modo independente e seletivo. </li></ul></ul><ul><ul><li>Template Method - Define o esqueleto de um algoritmo em uma operação adiando a definição de alguns passos para a subclasse. </li></ul></ul><ul><ul><li>Visitor - Define operações independentes a serem realizadas sobre elementos de uma estrutura </li></ul></ul>

×