Apresentação Introdução Design Patterns

13
Design Patterns Design Patterns Prof. Lucas Simões Maistro [email protected] http://www.twitter.com/lucas_simoes http://blogdopiruca.wordpress.com/

Transcript of Apresentação Introdução Design Patterns

Page 1: Apresentação Introdução Design Patterns

Design PatternsDesign Patterns

Prof. Lucas Simões [email protected]://www.twitter.com/lucas_simoeshttp://blogdopiruca.wordpress.com/

Page 2: Apresentação Introdução Design Patterns

Desafios da Área de SoftwareDesafios da Área de SoftwareSistemas estão se tornando maiores e com

aplicações mais complexas

As empresas esperam◦Menos bugs◦Mais rapidez de desenvolvimento

Diferentes técnicas podem ajudar a atingir esse objetivo

Design Patterns é uma delas

Page 3: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntroduçãoMédia de 50 bugs a cada 1000 linhas de

código em produção (não é código beta ou em desenvolvimento é PRODUÇÃO)

Microsoft conseguiu atingir 0,5 defeitos a cada 1000 linhas◦XP contém 40-50 milhões de linhas (entre 20 e

25mil bugs, é muita coisa)◦.Net usa diversos design patterns◦O time de Patterns & Practices trabalha com

integração de design patterns www.microsoft.com/practices

Page 4: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntroduçãoColeção de soluções

Utilizadas anteriormente por especialistas em grande escala para a solução de problemas comuns

Padrões são como uma caixa de ferramentas

Estudamos padrões para facilitar o dia-a-dia do desenvolvimento

O padrão surge naturalmente

Page 5: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Origem na Engenharia Civil

Criação de catálogos para Arquitetura

Em 1978, Christopher lança seu livro com o nome "A Pattern Language" onde são feitas definições de padrão de projeto

Page 6: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

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.

Em 1995, Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides - (gang of four - GoF), publicam o livro "Design Patterns: Elements of Reusable Object-Oriented Software", onde os autores descrevem 23 padrões baseados em suas experiências e que, ainda hoje é a principal referência no assunto.

Page 7: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntroduçãoTemplate de um Design Pattern

◦Nome Padrão [Descreve a essência do padrão em um curto e expressivo nome].

◦Objetivo [Descreve o que o padrão faz].◦Também Conhecido Como [Lista de sinônimos para

o padrão].◦Motivação [Fornece um exemplo de um problema e

como o padrão resolve aquele problema].◦Aplicabilidade [Lista as situações onde o padrão é

aplicado].◦Estrutura [Conjunto de diagramas de classes e

objetos que descrevem o padrão].

Page 8: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Template de um Design Pattern – Cont.◦Participantes [Descreve as classes e objetos

que participam do design pattern e suas responsabilidades].

◦Colaborações [Descreve como os participantes colaboram para cumprir com suas responsabilidades].

◦Conseqüências [Descreve os benefícios e os custos da utilização do padrão]

Page 9: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Os Design Patterns GoF estão divididos em:◦Padrões de Criação: relacionados ao

processo de criação dos objetos

◦Padrões de Estrutura: relacionados com a composição de objetos

◦Padrões de Comportamento: relacionados com a forma como objetos interagem e distribuem o trabalho

Page 10: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Padrões de Criação (Creational Patterns)◦ 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.

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

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

◦ Prototype - O padrão Prototype fornece uma outra maneira de se construir objetos de tipos arbitrários.

◦ Singleton - Garante que para uma classe específica só possa existir uma única instância, a qual é acessível de forma global e uniforme.

Page 11: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Padrões de Estrutura (Structural Patterns)◦ Adapter - Permite que dois objetos se comuniquem mesmo que

tenham interfaces incompatíveis.◦ Bridge - Desacopla a interface da implementação; Ocultação de

detalhes de implementação dos clientes.◦ Composite - lida com uma estrutura de elementos agrupada

hierarquicamente (não como meras coleções).◦ Decorator - Atribui responsabilidades adicionais a um objeto

dinamicamente. O Decorator fornece uma alternativa flexível a subclasses para a extensão da funcionalidade.

◦ Facade - Interface unificada para um subsistema ; Torna o subsistema mais fácil de usar.

◦ Flyweight - Usa compartilhamento para dar suporte a vários objetos de forma eficiente.

◦ Proxy - Fornece um objeto representante ou procurador de outro objeto para controlar o acesso ao mesmo.

Page 12: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntroduçãoPadrões de Comportamento (Behavioural

Patterns)◦ 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.

◦ Command - Associa uma ação a diferentes objetos através de uma interface conhecida.

◦ Interpreter - Usado para ajudar uma aplicação a entender uma declaração de linguagem natural e executar a funcionalidade da declaração.

◦ Iterator - Provê uma forma de percorrermos os elementos de uma coleção sem violar o seu encapsulamento.

◦ Mediator - Cria um objeto que age como um mediador controlando a interação entre um conjunto de objetos.

◦ Memento - Torna possível salvar o estado de um objeto de modo que o mesmo possa ser restaurado.

Page 13: Apresentação Introdução Design Patterns

Design Patterns - Design Patterns - IntroduçãoIntrodução

Padrões de Comportamento (Behavioural Patterns) Cont.◦ 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.

◦ State - Permite objeto alterar seu comportamento quando estado interno muda.

◦ Strategy - Permite que uma família de algoritmos seja utilizada de modo independente e seletivo.

◦ Template Method - Define o esqueleto de um algoritmo em uma operação adiando a definição de alguns passos para a subclasse.

◦ Visitor - Define operações independentes a serem realizadas sobre elementos de uma estrutura