Post on 19-Apr-2015
Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights
Reserved.
Software Design Patterns& AntiPatterns
Helder Sousa
Engineering ManagerEAI&DB Engineering Area
2
Design patterns: Definição
Um Design Pattern é
uma solução estável
para um problema comum
num determinado contexto.
3
Design patterns: Definição de AntiPattern
AntiPattern é uma
má solução
para um problema comum
num determinado contexto
Um bom AntiPattern também deve indicar o porquê da má
solução ser atractiva, e qual o Pattern que se deve aplicar.
4
Design patterns: Benefícios
Abstracto qb para aplicar a várias tecnologias.
Específico qb para permitir colocar as “mãos na massa”.
Fornecem um vocabulário comum entre software developers.
São soluções comprovadas.
Potenciam a reutilização.
5
Design Patterns: Template
Contexto Problema Forças Solução Consequências Implementação Patterns relacionados
6
Design patterns: Common patterns
Business delegate, Service locator, Session façade, Data Access Object
cd Application Patterns
Data SpaceBusiness Logic Space Data Access Space
Business Delegate
Serv ice Locator
Session Facade
Session Facade
Session Facade
DAO
DAO
DAO
XML
RDBMS
Legacy Systems
Value Object
Factory
7
Design patterns: Service locator
O Service Locator centraliza as operações de pesquisa de um serviço (lookup), fornece um acesso central a pode ainda conter uma cache eliminando o peso de novas pesquisas.
cd Application Patterns
Client «singleton»Serv iceLocator
InitialContext
Serv iceFactoryBusinessServ ice
create
lookup
lookup/create
8
Design patterns: Façade
Fornece um interface comum para um conjunto de interface de um subsistema.
Define um interface de alto nível que torna o subsistema mais simples de utilizar.
cd Application Patterns
Facade
Subsystem
Module A
Module B
Module C
9
Design patterns: Façade
10
Design patterns: Factory
O Factory Pattern devolve instâncias parametrizadas de classes, mediante configurações de sistema, parâmetros ou estado do sistema.
cd Logical Model
ConnectionFactory
+ getConnection() : Connection
getConnection devolve uma instância de uma Connection mediante as configurações do sistema.
Connection
«arti fact»
Connection parameters
SQLServ erConnection OracleConnection
11
Design patterns: DAO (Data Access Object)
Data Access Object (ou DAO) pattern: • Encapsula o acesso a dados.• Adapta uma API específica de acesso a dados, a um
interface cliente genérico.
cd Application Patterns
Business Object DataAccessObject
Value Object
DataSourceuses
create/usesread/modify
12
Design patterns: DAO (Data Access Object)
Exemplo de um DAO:cd Application Patterns
«interface»DataAccessObject
+ findByPrimaryKey(string) : ValueObject+ update(ValueObject) : void+ insert(ValueObject) : void+ delete(ValueObject) : void
StudentsDAO
+ findByPrimaryKey(string) : ValueObject+ update(ValueObject) : void+ insert(ValueObject) : void+ delete(ValueObject) : void
«realize»
13
Design patterns: DAO (Pluggable & External SQL)
15
Design patterns: MVC (Model, View, Controller)
Uma aplicação apresenta dados, processados por regras de negócio em múltiplos écrans. A equipe de engenharia responsável pelo desenho, implementação de manutenção é multidisciplinar.
16
Anti-patterns: Shoot The Messenger
Problema: Ninguém gosta de ouvir más notícias. Contexto: Alguém descobre um problema e avisa. Forças:
Pressão Falta de controlo da situação Não é visível solução imediata para o novo problema
Solução: Gritar com o mensageiro do problema
Resultado: Cada vez os problemas são identificados mais tarde, e portanto com mais custos para o desenvolvimento do projecto.
Solução proposta: Envolver o mensageiro na procura da solução.
(see: http://c2.com/cgi/wiki?ShootTheMessenger)
17
Design patterns: Fontes de informação
Patterns for beginners:http://c2.com/cgi-bin/wiki?PatternsForBeginners
Enterprise integration patternshttp://www.eaipatterns.com/eaipatterns.html
Hillside patterns libraryhttp://hillside.net/patterns/
Java Blueprints Patternshttp://java.sun.com/blueprints/patterns/index.html
The Server Side patterns libraryhttp://www.theserverside.com/patterns/index.tss
Parry's Patterns Pagehttp://www.castle-cadenza.demon.co.uk/pattern.htm
AntiPatterns Cataloghttp://c2.com/cgi/wiki?AntiPatternsCatalog
18
Design patterns: Fontes de informação
Muito bem aceite Conhecido como
“GangOfFour” Um “must” !!
19
Design patterns: Final statement
Design patterns
Keep them in mind !!
Abuse of them !!!!!