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

Design Patterns

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