Design Patterns - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

Design Patterns

Description:

Bruno Lustosa Pereira bruno_at_lustosa.net Solu es elegantes para problemas recorrentes PHP Conference Brasil 2006-12-01 - S o Paulo Design Patterns O que s o esses ... – PowerPoint PPT presentation

Number of Views:118
Avg rating:3.0/5.0
Slides: 23
Provided by: lustosaNe
Category:
Tags: design | patterns

less

Transcript and Presenter's Notes

Title: Design Patterns


1
Design Patterns
  • Bruno Lustosa Pereira
  • bruno_at_lustosa.net
  • Soluções elegantes para problemas recorrentes
  • PHP Conference Brasil
  • 2006-12-01 - São Paulo

2
Design Patterns
  • O que são esses padrões?
  • Estruturas recorrentes encontradas no processo de
    desenvolvimento de softwares orientados a objeto.
  • Modelos de soluções reutilizáveis para problemas
    encontrados diariamente.
  • Não é re-uso de código, e sim de idéias e
    estratégias de desenvolvimento.

1 / 21
3
Design Patterns
  • GoF - Gang of Four
  • O primeiro livro sobre o assunto.
  • A comunidade se refere aos 4 autores como a
    "Gangue dos Quatro".

2 / 21
4
Design Patterns
  • Tipos de Padrões
  • Criação Principal função é lidar com os
    mecanismos de criação de objetos. Exemplos
    Factory, Singleton e Registry.
  • Estruturais Simplificam a realização de
    relacionamentos entre diferentes classes.
    Exemplos Facade, Adapter e Decorator.
  • Comportamentais Preocupam-se com a atribuição de
    responsabilidades entre objetos. Exemplos
    Observer, Strategy.

3 / 21
5
Design Patterns
  • Prós e Contras
  • Prós
  • Facilitam o re-uso de técnicas e arquiteturas de
    software já testadas com sucesso.
  • Define um padrão de comunicação compartilhado
    pela equipe de desenvolvimento.
  • Contras
  • Precisa ser reprogramado em cada aplicação.
  • Uso indiscriminado pode aumentar muito a
    complexidade.

4 / 21
6
Design Patterns
  • Factory (fábrica)
  • Problema Como encapsular o processo de criação
    de objetos complexos?
  • Exemplos Objetos onde é necessário escolher qual
    subclasse instanciar, onde é necessário buscar
    suas configurações iniciais, ou onde se precisa
    criar objetos auxiliares como parte do processo
    de criação.

5 / 21
7
Design Patterns
  • Diagrama UML do Factory
  • Método factory() da Fábrica retorna instâncias de
    Produto.

6 / 21
8
Design Patterns
  • Singleton
  • Problema Como garantir que uma classe só possua
    uma única instância, e que essa instância seja
    acessível globalmente?
  • Exemplos Conexão com BD, escrita em arquivo,
    spool de impressão, outros padrões como o
    Registro.

7 / 21
9
Design Patterns
  • Diagrama UML do Singleton
  • Método instance() retorna a instância do
    singleton.
  • Construtor private.
  • Propriedade instance guarda referência à
    instância.

8 / 21
10
Design Patterns
  • Registry (registro)
  • Problema Como criar um "catálogo" de objetos, de
    onde se possa conseguir referências a eles
    através de uma interface conhecida?
  • Exemplo Site com conexões para múltiplos BDs. As
    conexões ficam no registro, facilitando as
    consultas em qualquer ponto do código.

9 / 21
11
Design Patterns
  • Diagrama UML do Registry
  • Método instance() retorna a instância do
    registro.
  • Construtor private.
  • store é um array que guarda as referências dos
    objetos.
  • set() guarda referências e get() as recupera.

10 / 21
12
Design Patterns
  • Facade (fachada)
  • Problema Como simplificar a interface de um
    sistema ou classe complexos, criando uma
    fachada mais amigável?
  • Exemplos Um gateway de pagamento, que serve de
    interface com bancos e administradoras de cartões.

11 / 21
13
Design Patterns
  • Diagrama UML do Facade
  • Facade é a classe que provê uma interface simples
    para um subsistema complexo.

12 / 21
14
Design Patterns
  • Adapter (adaptador)
  • Problema Como fazer com que duas classes com
    interfaces incompatíveis possam se falar?
  • Exemplos Uma classe que só funciona com
    determinada versão de outra. Um adaptador poderia
    ser usado para fazer com que essa classe
    funcionasse com outras versões.

13 / 21
15
Design Patterns
  • Diagrama UML do Adaptador
  • Cliente fala com Compatível. Adaptador faz com
    que Cliente fale com Incompatível.

14 / 21
16
Design Patterns
  • Decorator (decorador)
  • Problema Como adicionar funcionalidade a uma
    classe dinamicamente, sem precisar usar herança?
  • Exemplos Um objeto "janela", que pode possuir
    diversas funcionalidades opcionais, como bordas,
    barra de rolagem, menu, etc. Usando herança,
    chegaríamos a uma explosão de subclasses,
    inviabilizando a manutenção.

15 / 21
17
Design Patterns
  • Diagrama UML do Decorator

16 / 21
18
Design Patterns
  • Observer (observador)
  • Problema Como alertar objetos de que houve uma
    mudança de estado em um objeto de forma
    automática?
  • Exemplos Campos em uma aplicação PHP-GTK, outros
    casos onde exista uma interdependência entre
    objetos (uma ação precisa ser tomada por um
    objeto A caso o estado do objeto B seja alterado).

17 / 21
19
Design Patterns
  • Diagrama UML do Observer
  • Objeto observável alerta com uma chamada a
    notify(), que executa update() em cada
    observador.

18 / 21
20
Design Patterns
  • Strategy (estratégia)
  • Problema Como alterar a implementação interna de
    um objeto dinamicamente?
  • Exemplos Classes onde se tenham muitos comandos
    switch. Qualquer problema onde se tenha que tomar
    uma ação diferente dependendo de algum tipo ou
    valor.

19 / 21
21
Design Patterns
  • Diagrama UML do Strategy
  • Classe Ordenacao pode usar qualquer uma das
    estratégias, chamando o método ordena().

20 / 21
22
Design Patterns
  • Mais informações
  • http//www.lustosa.net/ - Site pessoal, com os
    slides e a implementação em PHP dos padrões
    apresentados.
  • http//www.phppatterns.com/ - Excelente site
    sobre design patterns em PHP.
  • 21 / 21
Write a Comment
User Comments (0)
About PowerShow.com