DesignPatterns
IntroduçãoePráticas
DesignPatterns
IntroduçãoePráticas
ApresentaçãodosconceitosfundamentaisdeDesignPatternintroduzidospeloGOF
CatálogodoGangOfFour-DesignPatterns–ElementsofReusableObject-OrientedSoftware
Pedro Henrique Frozi
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
INTRODUÇÃO
Um padrão é uma maneira específica de fazer algo, ou um maneira
predefinida de alcançar determinado objetivo, capaz de resolver
problemas nos mais variados contextos.
CristopherAlexander - Arquiteto que documentou as melhores
práticas de padrões de projeto para a construção civil. A engenharia
de software foi fortemente influenciada pelo seu trabalho.
INTRODUÇÃO
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (2002). Design
Patterns – Elements of Reusable Object-Oriented Software.
Metsker, S. J., & Wesley, P. A. (2002). Design Patterns Java
Workbook. Design.
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
DEFINIÇÃO
Um DesignPattern é um padrão definido para resolver determinado
problema, que utiliza classes e métodos de uma linguagem orientada
à objetos.
DEFINIÇÃO
Elementos Essenciais de um padrão*:
● Nome
● Problema
● Solução
● Consequências
DEFINIÇÃO
Elementos Essenciais de um padrão*:
● Nome
● Problema
● Solução
● Consequências
DEFINIÇÃO
Elementos Essenciais de um padrão*:
● Nome
● Problema
● Solução
● Consequências
DEFINIÇÃO
Elementos Essenciais de um padrão*:
● Nome
● Problema
● Solução "ripple-effect"
● Consequências
Ampatzoglou, A., Chatzigeorgiou, A., Charalampidou, S., & Avgeriou, P. (2015). The effect of GoF design patterns on
stability: A case study. IEEE Transactions on Software Engineering, 41(8), 781–802.
DEFINIÇÃO
Elementos Essenciais de um padrão*:
● Nome
● Problema
● Solução
● Consequências
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
CATEGORIZAÇÃO-GOF
Rocha, H. da. (n.d.). Padrões de Design com aplicações em java.
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
CATEGORIZAÇÃO-Metsker&Wesley
Rocha, H. da. (n.d.). Padrões de Design com aplicações em java.
Rocha, H. da. (n.d.). Padrões de Design com aplicações em java.
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
CommonPatterns(byGOF)
1. Abstract Factory
2. Adapter
3. Composite
4. Decorator
5. Factory Method
6. Observer
7. Strategy
8. Template Method
CommonPatterns(byGOF)
Adapter (Wrapper)
Converter a interface de uma classe em outra interface esperada pelo
cliente.
Permite comunicação entre classes que não poderiam trabalhar
juntas devido à incompatibilidade de suas interfaces.
CommonPatterns(byGOF)
Adapter (Wrapper)
CommonPatterns(byGOF)
Composite
Compõe objetos em estruturas de árvore para representar
hierarquias.
Composite permite que clientes tratem objetos individuais e
composições de objetos de maneira uniforme.
CommonPatterns(byGOF)
Composite
Uma das motivações deste padrão surgiu das estruturas hierárquicas
necessárias para o desenvolvimento de aplicações gráficas.
CommonPatterns(byGOF)
Composite
CommonPatterns(byGOF)
Decorator
Anexa resposabilidades adicionais a um objeto dinamicamente,
oferencendo uma alternativa flexível ao uso de herança para
estender uma funcionalidade.
CommonPatterns(byGOF)
Decorator
CommonPatterns(byGOF)
Decorator
CommonPatterns(byGOF)
Factory Method(VirtualConstructor)
Define uma interface para criar um objeto mas deixar que subclasses
decidam que classe instanciar. Factory Method permite que uma
classe delegue a responsabilidade de instanciamento às subclasses.
CommonPatterns(byGOF)
Factory Method(VirtualConstructor)
CommonPatterns(byGOF)
Strategy
Definir uma família de algoritmos, encapsular cada um, e fazê-los
intercambiáveis. Strategy permite que algoritmos mudem
independentemente entre clientes que os utilizam.
CommonPatterns(byGOF)
Strategy
CommonPatterns(byGOF)
TemplateMethod
Define o esqueleto de um algoritmo dentro de uma operação,
deixando alguns passos a serem preenchidos pelas subclasses.
Template Method permite que suas subclasses redefinam certos
passos de um algoritmo sem mudar a sua estrutura.
CommonPatterns(byGOF)
TemplateMethod
CommonPatterns(byGOF)
TemplateMethod
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
VUPatterns(DavidBudgen)
Zhang, C., & Budgen, D. (2013). A survey of experienced user perceptions about
software design patterns. Information and Software Technology, 55(5), 822–835.
VUPatterns(DavidBudgen)
Desenvolvedores
Zhang, C., & Budgen, D. (2013). A survey of experienced user perceptions about
software design patterns. Information and Software Technology, 55(5), 822–835.
VUPatterns(DavidBudgen)
Pesquisadores
Zhang, C., & Budgen, D. (2013). A survey of experienced user perceptions about
software design patterns. Information and Software Technology, 55(5), 822–835.
VUPatterns(DavidBudgen)
1. Proxy
2. Facade
VUPatterns(DavidBudgen)
Proxy (Surrogate)
O objetivo deste padrão é prover um substituto ou ponto de acesso
através do qual um objeto possa controlar o acesso a outro.
VUPatterns(DavidBudgen)
Proxy (Surrogate)
O objetivo deste padrão é prover um substituto ou ponto de acesso
através do qual um objeto possa controlar o acesso a outro.
VUPatterns(DavidBudgen)
Proxy (Surrogate)
VUPatterns(DavidBudgen)
Facade
O objetivo deste padrão é fornecer uma interface unificada para um
determinado conjunto de interfaces de um subsistema.
Ele define uma interface em alto nível que visa simplificar o uso de
subsistemas.
VUPatterns(DavidBudgen)
Facade
VUPatterns(DavidBudgen)
Facade
+ Facilita o desacoplamento de camadas;
+ Aumenta a coesão dos objetos das camadas inferiores;
ÍNDICE
1. Introdução
2. Definição
3. Categorização
a. GOF
b. Metsker & Wesley
4. Common Patterns (by GOF)
5. VU Patterns (David Budgen)
6. Conclusões
DúvidasDúvidas
ApresentaçãodosconceitosfundamentaisdeDesignPatternintroduzidospeloGOF
CatálogodoGangOfFour-DesignPatterns–ElementsofReusableObject-OrientedSoftware
Pedro Henrique Frozi

Design Patterns - Introdução e Práticas