Introdução Padrões de Projeto Princípios de Design Pattern Prof. Wolley
Introdução Padrões de Projeto Um Design Pattern é uma técnica de modelagem de classes e objetos que resolve um problema comum a diversos tipos de aplicativos.
Padrões Arquiteturais Famílias de Padrões Gang Of Four – GOF 23 – Padrões Criação Estrutura Comportamento
GOF – 23 Padrões de Projeto Propósito Escopo Criação Estrutural Comportamental Classe Factory Method Adapter Interpreter Template Method Objeto Abstract Factory Builder Prototype Singleton Bridge Composite Façade Flyweight Proxy Chain of Resposibility Command Iterator Mediator Memento Observer Strategy Visitor
Padrões Arquiteturais Famílias de Padrões J2EE: Business Delegate, Composite Entity, Composite View, Data Access Object, Fast Lane, Reader, Front Controller, Intercepting Filter, Model, view ,controller Service Locator, Session Façade, Transfer Object, Value List Handler, View Helper http://java.sun.com/blueprints/corej2eepatterns/Patterns/
Princípios de Design Programe para uma interface, não para um implementação Prefira a composição de objetos à herança de classe Encapsular o que varia
1 º Princípios: Programe para uma interface (Superclasse), não para um implementação Quando a herança é utilizada apropriadamente todas as classes derivadas sobrescrevem os métodos da superclasse.
1 º Princípios: Programe para uma interface, não para um implementação
1 º Princípios: Programe para uma interface, não para um implementação Não declare variáveis como instâncias de classes concretas, mas para classes abstratas ou interfaces;
1 º Princípios: Programe para uma interface, não para um implementação As classes ClienteDAO, ProdutoDAO e EstoqueDAO dependem da implementação concreta PostgreSQL
1 º Princípios: Programe para uma interface, não para um implementação Dependência da Implementação
1 º Princípios: Programe para uma interface, não para um implementação Mudanças muitas, vezes necessárias, pode desencadear um efeito colateral em classes dependentes.
1 º Princípios: Programe para uma interface, não para um implementação
1 º Princípios: Programe para uma interface, não para um implementação A interface representa uma abstração do comportamento de uma ou mais classes.
1 º Princípios: Programe para uma interface, não para um implementação Classes dependendo da interface
1 º Princípios: Programe para uma interface, não para um implementação Estrutura das coleções e mapas
2º Princípio: Prefira a composição de objetos à herança Vantagens da Herança Herança é definida estaticamente em tempo de compilação; é simples de usar uma vez que é suportada pela linguagem; Torna mais fácil de modificar a implementação que esta sendo reutilizada;
2º Princípio: Prefira a composição de objetos à herança Desvantagem As super classes definem parte da representação física das suas subclasses. Certos aspectos herdados podem não fazer sentido em determinadas contextos;
2º Princípio: Prefira a composição de objetos à herança
2º Princípio: Prefira a composição de objetos à herança
3º Princípio: Encapsular o que pode variar
3º Princípio: Encapsular o que pode variar
3º Princípio : Encapsular o que pode variar Olhar para uma classe, enxergar sua responsabilidade, abstrair suas possíveis alterações e criar uma nova classe. Se a sua classe precisa ter mais de uma responsabilidade, divida-as e as associe.