Escolar Documentos
Profissional Documentos
Cultura Documentos
Padrões de Design
Abstract Factory
• Provê uma interface para criação de famílias de
Finalidade objetos relacionados ou dependentes
Criação Estrutural Comportamental • Responsabilidade: Criar Objetos
Classe
• Factory Method • Adapter • Interperter • Benefícios
• Abstract • Adapter • Chain of Responsibility – Há limites de QUEM pode criar objetos, COMO eles
Factory • Bridge • Command
• Builder • Composite • Iterator são criados e QUANDO eles são criados (Restrições de
Escopo • Prototype • Decorator • Mediator Criação)
Objeto • Singleton • Facade • Momento
• Flyweight • Observer – Código de criação localizado em uma classe → menos
• Proxy • State chance de erros
• Strategy
• Vistor – Cliente desacoplado
1
Abstract Factory Padrões de Design
Exemplo Singleton
• Defina um Factory e especifique os • Problema: Uma classe tem apenas uma instância e pvovê
objetos abstraindo os factories. um ponto de acesso global a essa instância
• Solução: Criar um método estático getInstance(). Quando
public class USAddressFactory implements o método for acessado pela primeira vez, cria a instancia
AddressFactory{ do objeto e retorna uma referencia para o objeto criado.
public Address createAddress(){
Em acessos subsequentes nenhuma instancia é criada e a
return new USAddress();
} referencia ao objeto existente é retornada.
• Participantes e Colaboradores:
public PhoneNumber createPhoneNumber(){ – Singleton: define uma operação Instance que permite que o cliente
return new USPhoneNumber(); acesse apenas sua única instância. Instance é uma operação da
} classe.
}
2
Padrões de Design Padrões de Design
Adapter Strategy
• Problema: Uma classe muitas vezes não é reusada porque
• Exemplo Adapter sua interface não corresponde à interface específica de uma
aplicação
• Solução: Definir uma familia de algoritmos, encapsular
Class NewTime cada uma delas e torná-las intercambiáveis. O Strategy
{ permite que o algoritmo varie independentemente dos
public: clientes que o usam.
int getTime( ) { • Participantes e Colaboradores:
– Strategy: defube uma interface comum para todos os algoritmos
return ad_oldTime.getTime * 100 +50 suportados
} Adaptee – ConcreteStrategy: implementa o algoritmo usando a interface de
Strategy
private:
– Context: é configurado com um objeto ConcreteStrategy e mantem
OldTime ad_oldTime; uma referencia para o objeto Strategy.
};
Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista
3
Padrões de Design Padrões de Design
Strategy Decorator
• Exemplo: Objeto que adiciona características a outros objetos
4
Padrões de Design Padrões de Design
Decorator Resumo
• Strategy X Decorator 1. Abstract Factory- Cria uma instancia de várias
famílias de classe
– Duas formas de mudar um objeto: Strategy
2. Builder - Separa construção de objetos da sua
permite mudar o interior de um objeto.
representação
Decorator permite mudar a superficie do objeto.
3. Factory Method – Cria uma instância de várias
• Adapter X Decorator classes derivadas
– Decorator somente muda as responsabilidades 4. Prototype – Uma instância é copiada ou clonada
de um objeto e não sua interface. O adapter dá 5. Singleton – Uma classe que tem uma única
uma interface nova. instância
Padrões de Design
Resumo
19. Observer – Maneira de notificar mudança em várias
classes
20. State – Altera o comportamento de um objeto quando
seu estado muda.
21. Strategy – Encapsula um algoritmo dentro da classe
22. Template Method – Permite que subclasses definam
passos de um algoritmo sem mudar a estrutura do
mesmo
23. Visitor – Define uma nova operação para uma classe
sem mudar a classe