SlideShare uma empresa Scribd logo
1 de 21
EVANDRO VENANCIO

design patterns

@

B

Interpreter

F

Bridge
Strategy

Visitor

Factory

@

m

Contato

evandro.venancio@gmail.com

Observer

Composite

j

Flyweight

e

Decorator
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
Obrigado!
Evandro Venancio
Software Architect

http://evenancio.wordpress.com
evandro.venancio@gmail.com
@evenancio

Mais conteúdo relacionado

Destaque

GraphDay Stockholm - Telia Zone
GraphDay Stockholm - Telia Zone GraphDay Stockholm - Telia Zone
GraphDay Stockholm - Telia Zone Neo4j
 
Neo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j GraphTalks - Einführung in GraphdatenbankenNeo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j GraphTalks - Einführung in GraphdatenbankenNeo4j
 
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph Databases
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph DatabasesGraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph Databases
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph DatabasesNeo4j
 
Identity and Access Management
Identity and Access ManagementIdentity and Access Management
Identity and Access ManagementNeo4j
 
The Five Graphs of Government: How Federal Agencies can Utilize Graph Technology
The Five Graphs of Government: How Federal Agencies can Utilize Graph TechnologyThe Five Graphs of Government: How Federal Agencies can Utilize Graph Technology
The Five Graphs of Government: How Federal Agencies can Utilize Graph TechnologyNeo4j
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyNeo4j
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentationjexp
 
GraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jGraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jNeo4j
 
GraphTalks Rome - Identity and Access Management
GraphTalks Rome - Identity and Access ManagementGraphTalks Rome - Identity and Access Management
GraphTalks Rome - Identity and Access ManagementNeo4j
 
Knowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeKnowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeNeo4j
 
Journey of The Connected Enterprise - Knowledge Graphs - Smart Data
Journey of The Connected Enterprise - Knowledge Graphs - Smart DataJourney of The Connected Enterprise - Knowledge Graphs - Smart Data
Journey of The Connected Enterprise - Knowledge Graphs - Smart DataBenjamin Nussbaum
 
How to Design Retail Recommendation Engines with Neo4j
How to Design Retail Recommendation Engines with Neo4jHow to Design Retail Recommendation Engines with Neo4j
How to Design Retail Recommendation Engines with Neo4jNeo4j
 
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...Neo4j
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de ProjetoSandy Maciel
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareÁlvaro Farias Pinheiro
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
Padrão Observer (Java)
Padrão Observer (Java)Padrão Observer (Java)
Padrão Observer (Java)Allan Denis
 
Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)Teles Maciel
 

Destaque (20)

GraphDay Stockholm - Telia Zone
GraphDay Stockholm - Telia Zone GraphDay Stockholm - Telia Zone
GraphDay Stockholm - Telia Zone
 
Neo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j GraphTalks - Einführung in GraphdatenbankenNeo4j GraphTalks - Einführung in Graphdatenbanken
Neo4j GraphTalks - Einführung in Graphdatenbanken
 
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph Databases
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph DatabasesGraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph Databases
GraphDay Stockholm - Graphs in the Real World: Top Use Cases for Graph Databases
 
Identity and Access Management
Identity and Access ManagementIdentity and Access Management
Identity and Access Management
 
The Five Graphs of Government: How Federal Agencies can Utilize Graph Technology
The Five Graphs of Government: How Federal Agencies can Utilize Graph TechnologyThe Five Graphs of Government: How Federal Agencies can Utilize Graph Technology
The Five Graphs of Government: How Federal Agencies can Utilize Graph Technology
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right Technology
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
 
GraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jGraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4j
 
GraphTalks Rome - Identity and Access Management
GraphTalks Rome - Identity and Access ManagementGraphTalks Rome - Identity and Access Management
GraphTalks Rome - Identity and Access Management
 
Knowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeKnowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your Knowledge
 
Journey of The Connected Enterprise - Knowledge Graphs - Smart Data
Journey of The Connected Enterprise - Knowledge Graphs - Smart DataJourney of The Connected Enterprise - Knowledge Graphs - Smart Data
Journey of The Connected Enterprise - Knowledge Graphs - Smart Data
 
How to Design Retail Recommendation Engines with Neo4j
How to Design Retail Recommendation Engines with Neo4jHow to Design Retail Recommendation Engines with Neo4j
How to Design Retail Recommendation Engines with Neo4j
 
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...
Hadoop and Graph Databases (Neo4j): Winning Combination for Bioanalytics - Jo...
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de Software
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Padrão Observer (Java)
Padrão Observer (Java)Padrão Observer (Java)
Padrão Observer (Java)
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
 
Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)Padrão Observador (Orientação à Objetos)
Padrão Observador (Orientação à Objetos)
 

Semelhante a Design Patterns

Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 RefactoringWildtech
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de ProjetoNauber Gois
 
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...André Constantino da Silva
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasNorton Guimarães
 
Design de interfaces com padrões de interação
Design de interfaces com padrões de interaçãoDesign de interfaces com padrões de interação
Design de interfaces com padrões de interaçãoUTFPR
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Joel S. Coleti
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 

Semelhante a Design Patterns (20)

Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 
Boas praticas de_programacao_oo
Boas praticas de_programacao_ooBoas praticas de_programacao_oo
Boas praticas de_programacao_oo
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 Refactoring
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e Dicas
 
Design de interfaces com padrões de interação
Design de interfaces com padrões de interaçãoDesign de interfaces com padrões de interação
Design de interfaces com padrões de interação
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
 
Web_2.0 Web Standards Web Semântica
Web_2.0 Web Standards Web SemânticaWeb_2.0 Web Standards Web Semântica
Web_2.0 Web Standards Web Semântica
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 

Design Patterns

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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