apresentação introdução design patterns
TRANSCRIPT
Design PatternsDesign Patterns
Prof. Lucas Simões [email protected]://www.twitter.com/lucas_simoeshttp://blogdopiruca.wordpress.com/
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
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
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
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
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.
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].
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]
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
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.
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.
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.
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