padrões de projeto - aula 03 - 19.08

17
Padrões de Criação Prof. Erick Jeronimo

Upload: carlos-renan

Post on 21-Dec-2015

225 views

Category:

Documents


1 download

DESCRIPTION

padrões de projeto

TRANSCRIPT

Padrões de Criação

Prof. Erick Jeronimo

Contexto

Modele um sistema para uma montadora de carros:

• Sabe-se que na montagem de um carro, estão envolvidos:– Roda: marca, aro, tipo (liga leve/comum);– Motor: potência, nível lubrificante;– Ar-condicionado: tipo (digital/comum), potência;

Factory Method

“Definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classe instanciar. O Factory Method permite adiar a instanciação para subclasses.”

Factory Method

• Ao invés de instanciar objetos diretamente, deixamos esta responsabilidade à cargo de uma fábrica de objetos.

• Com isto ganhamos em flexibilidade no código• Cuidado com a implementação: Pode-se

agregar complexidade desnecessária ao código.

Implementação

• Pode-se dar através de métodos estáticos;• Classe abstrata atraves de herança;• Classe completamente concreta;

Abstract Factory

“Fornecer uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas."

Abstract Factory

• Agrupamento de objetos por categoria/família• Em geral cria-se uma interface que

corresponde à família/agrupamento ao qual aquele objeto pertence

• Desta forma, quem solicita o objeto não sabe ao certo a qual classe aquela instância realmente pertence.

Singleton

“Garantir que uma classe tenha somente uma instância e fornece um ponto global de acesso para a mesma.”

Singleton

• Por que motivo teríamos a necessidade de manter uma única instância de um determinado tipo de objeto?

Singleton

• Relatórios/Dados pertinentes à utilização de um determinado objeto

• Dados de usuário (login, etc...)• Classes Singleton são interessantes quando é

necessario unificar o acesso a certos aspectos do programa.

Prototype

“Especificar tipos de objetos a serem criados usando uma instância protótipo e criar novos objetos pela cópia desse protótipo.”

Prototype

• Imagine uma lista de carros que o cliente precisa utilizar, mas que só serão conhecidos em tempo de execução.

• Para isto, podemos criar um protótipo de carro, que contém características pré-definidas, as quais podemos simplesmente manipular de acordo com a necessidade.

Prototype

• Exemplo: CarroNovo; CarroUsado;

Builder

“Separar a construção de um objeto complexo de sua representação de modo que o mesmo processo de construção possa criar diferentes representações.”

Builder

• Semelhante ao Abstract Factory e Factory Method;

• No entando, permite a construção de um objeto em partes menores - através de métodos específicos;

Builder

• Normalmente, cria-se uma interface que define os metodos comuns ao construtor

• Nas implementações concretas, define-se as características que serão associadas àquela instância de objeto

• Desta forma, delegamos a responsabilidade de construção ao Builder, facilitando o processo de criação de objetos

Referências

• GAMMA, Erich et al. Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos.