Design Patterns

2,071 views
1,934 views

Published on

Palestra de Design Patterns sob o ponto de vista arquitetônico, apresentando diferentes tipos de paradigmas e princípios, como o GoF, ISO, GRASP, SOLID, MVC e Aspect.

Published in: Technology

Design Patterns

  1. 1. EVANDRO VENANCIO design patterns @ B Interpreter F Bridge Strategy Visitor Factory @ m Contato evandro.venancio@gmail.com Observer Composite j Flyweight e Decorator
  2. 2. EVANDRO VENANCIO - DESIGN PATTERNS sobre padrões É sobre solução O padrão propõe uma solução para problemas corriqueiros É sobre reuso O padrão pode ser aplicado em diversas circunstâncias É sobre comunicação O padrão proporciona um entendimento comum entre as pessoas É sobre organização O padrão dá sentido as diferenças do universo É sobre entendimento Aprender o padrão é aprender como lidar com os problemas
  3. 3. EVANDRO VENANCIO - DESIGN PATTERNS exemplo de padrões Português, espanhol, inglês, grego O entendimento das línguas resolve o problema de Babel Real, dólar, libra, euro, yen A moeda utilizada em um país é uma espécie de padrão Código civil, criminal, penal As diversas leis descrevem os nossos direitos e deveres Dias, semanas, meses O ano é organizado e classificado de inúmeras formas Rock, pop, metal, blues, erudito, new age Os estilos musicais definem um padrão muito bem estabelecido
  4. 4. EVANDRO VENANCIO - DESIGN PATTERNS padronizando o mundo ISO International Organization for Standarlization Fundada em 1947 Em Genebra, na Suiça Aprovação e documentação De normas técnicas, classificação e normas de procedimento No Brasil: ABNT Associação Brasileira de Normas Técnicas No EUA: ANSI American National Standarts Institute
  5. 5. EVANDRO VENANCIO - DESIGN PATTERNS normas ISO em software ISO/IEEE 1471 e ISO/IEC 42010 Descreve o arquiteto e a arquitetura de software ISO/IEC 19501 Descreve a UML como um padrão gráfico para modelagem ISO/IEC 9126 Requisitos e qualidade de software ISO/IEC 12207 Processo para ciclo de vida do desenvolvimento (ALM) E muito mais! C, C++, VRLM, segurança em TI, gerenciamento de serviços
  6. 6. EVANDRO VENANCIO - DESIGN PATTERNS paradigma OO: a revolução Motivação Abstração de conceitos do mundo real Aplicação Inteligência Artificial, Linguística e Softwares Implementação da POO Conjunto de classes que definem objetos de um sistema Conceitos chaves Classe, herança, interface, pacote, polimorfismo, mensagem Linguagens populares C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
  7. 7. EVANDRO VENANCIO - DESIGN PATTERNS padrões de projetos É sobre arquitetura Utilizar, especificar e definir padrões como solução Christopher Alexander Aparece pela primeira vez em 1970 em seus livros Encapsulamento Um padrão encapsula um problema/solução bem definida Generalidade Permitir a construção de outras realizações a partir deste padrão Abstração Representam abstrações da experiência empírica
  8. 8. EVANDRO VENANCIO - DESIGN PATTERNS formato de um padrão Nome Uma descrição da solução, mais do que do problema Exemplo Figuras, diagramas ou descrições que ilustrem um protótipo Contexto A descrição das situações sob as quais o padrão se aplica Problema Descrição das forças e restrições e como elas interagem. Solução Descreve como construir artefatos de acordo com o padrão
  9. 9. EVANDRO VENANCIO - DESIGN PATTERNS GoF: Gang of Four Quem são? Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Problemas semelhantes Soluções ainda mais Make It Simple Os padrões devem ser simples e facilmente implementados Não reescreva código! Evita que o código seja duplicado e facilita a manutenção É sobre Interfaces São os contratos que definem a flexibilidade dos padrões
  10. 10. EVANDRO VENANCIO - DESIGN PATTERNS GoF: tipos de padrões Criação Sistemas independentes de como seus objetos são criados Estruturais Forma como as classes e objetos formam estrutura maiores. Comportamentais Algoritmo e atribuição de responsabilidades entre os objetos. Ao todos são 23 padrões Devidamente especificados e aceitos na comunidade.
  11. 11. EVANDRO VENANCIO - DESIGN PATTERNS padrões de criação Abstract Factory Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Builder Soluções ainda mais Factory Method Os padrões devem ser simples e facilmente implementados Prototype Evita que o código seja duplicado e facilita a manutenção Singleton São os contratos que definem a flexibilidade dos padrões
  12. 12. EVANDRO VENANCIO - DESIGN PATTERNS padrões estruturais Adapter Abstração de conceitos do mundo real Bridge Inteligência Artificial, Linguística e Softwares Composite Conjunto de classes que definem objetos de um sistema Decorator Classe, herança, interface, pacote, polimorfismo, mensagem Façade C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
  13. 13. EVANDRO VENANCIO - DESIGN PATTERNS padrões comportamentais Command Utilizar, especificar e definir padrões como solução Interpreter Aparece pela primeira vez em 1970 em seus livros Mediator Um padrão encapsula um problema/solução bem definida Observer Permitir a construção de outras realizações a partir deste padrão Strategy Representam abstrações da experiência empírica
  14. 14. EVANDRO VENANCIO - DESIGN PATTERNS GRASP Guia para atribuição de responsabilidade General Responsibility Assignment Software Patterns Creator Figuras, diagramas ou descrições que ilustrem um protótipo Expert A descrição das situações sob as quais o padrão se aplica Controller Descrição das forças e restrições e como elas interagem. Low Coupling Descreve como construir artefatos de acordo com o padrão
  15. 15. EVANDRO VENANCIO - DESIGN PATTERNS High Cohesion O entendimento das línguas resolve o problema de Babel Polymorphism A moeda utilizada em um país é uma espécie de padrão Pure Fabrication As diversas leis descrevem os nossos direitos e deveres Indirection O ano é organizado e classificado de inúmeras formas Protected Variations Os estilos musicais definem um padrão muito bem estabelecido
  16. 16. EVANDRO VENANCIO - DESIGN PATTERNS SOLID Single responsibility principle International Organization for Standarlization Open/closed principle Em Genebra, na Suiça Liskov substitution principle De normas técnicas, classificação e normas de procedimento Interface segregation principle Associação Brasileira de Normas Técnicas Dependency inversion principle American National Standarts Institute
  17. 17. EVANDRO VENANCIO - DESIGN PATTERNS técnicas e princípios DRY Don’t repeat yourself MVC Soluções ainda mais MVVM Os padrões devem ser simples e facilmente implementados KISS Principle Keep it simples, Stupid! BDD/TDD São os contratos que definem a flexibilidade dos padrões
  18. 18. EVANDRO VENANCIO - DESIGN PATTERNS POO Separation Of Concerns Aspect-oriented programming rão propõe uma solução para problemas corriqueiros Role-oriented programming O padrão pode ser aplicado em diversas circunstâncias Subject-oriented programming O padrão proporciona um entendimento comum entre as pessoas
  19. 19. EVANDRO VENANCIO - DESIGN PATTERNS outros paradigmas != OO Imperativo Abstração de conceitos do mundo real Estruturado Inteligência Artificial, Linguística e Softwares Funcional Conjunto de classes que definem objetos de um sistema Procedural Classe, herança, interface, pacote, polimorfismo, mensagem Event-Driven C++, C#, Java, Python, Ruby, SmallTalk, PHP 4
  20. 20. EVANDRO VENANCIO - DESIGN PATTERNS Declarativa Utilizar, especificar e definir padrões como solução Automata-based programming Aparece pela primeira vez em 1970 em seus livros
  21. 21. Obrigado! Evandro Venancio Software Architect http://evenancio.wordpress.com evandro.venancio@gmail.com @evenancio

×