Introdução aos Padrões de Desenho

From Wiki**3

Programação com Objectos
Introduction
Creation and Destruction
Inheritance & Composition
Abstraction & Polymorphism
Code Organization
Java Topics
Inner Classes
Enumerations
Data Structures
Exceptions
Input/Output
RTTI
Other Topics
JUnit Tests
UML Topics
Design Patterns
"Simple" Factory
Composite & Visitor
Command
Strategy & State
Template Method
Observer
Abstract Factory
Decorator & Adapter
Façade (aka Facade)

Contents

"Someone has already solved your problem."

Cada padrão:

  • Descreve um problema recorrente
  • Captura a estrutura estática e dinâmica, assim como a colaboração entre os principais actores

Categorias básicas:

  • "creational" -- "Simple" Factory, Factory Method, Abstract Factory, Singleton
  • "structural" -- Adapter, Bridge, Composite, Decorator, Façade, Proxy, ...
  • "behavioral" -- Command, Iterator, Observ er, State, Strategy, Template Method, Visitor, ...

Livros


Head First Design Patterns

Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates
2004 (Outubro), OReilly. ISBN 0596007124.
Índice (PDF), Errata


Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, 1995, Addison Wesley Professional. ISBN 0201633612.

Quiz

Emparelhar os nomes dos padrões com a frase mais apropriada: todas as frases têm uma associação.

1. Decorator A. Encapsula um objeto e fornece uma interface diferente para ele.
2. State B. As subclasses decidem como implementar passos de um algoritmo.
3. Iterator C. As subclasses decidem que classes concretas criar.
4. Façade D. Garante que um e apenas um objeto é criado.
5. Strategy E. Encapsula comportamentos intercambiáveis e usa delegação para decidir qual usar.
6. Proxy F. Os clientes tratam colecções de objetos e objetos individuais de maneira uniforme.
7. Factory Method G. Encapsula comportamentos baseados no estado e usa delegação para alternar entre comportamentos.
8. Adapter H. Fornece uma forma de percorrer uma colecção de objetos sem expor a sua implementação.
9. Observer I. Simplifica a interface de um conjunto de classes.
10. Template Method J. Encapsula um objeto para fornecer novo comportamento.
11. Composite K. Permite que um cliente crie famílias de objectos sem especificar suas classes concretas.
12. Singleton L. Permite que objectos sejam notificados quando um estado é alterado.
13. Abstract Factory M. Encapsula um objecto para controlar o acesso a ele.
14. Command N. Encapsula um pedido como um objeto.

Exercício adaptado de "Head First Design Patterns" (consultar chave no livro).