Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

PADRÕES DE PROJETO..
(Unified Modeling Language)
Projeto de Sistemas de Software
Design Patterns Builder Pattern
Projeto de Sistemas de Software
Elisabeth Suescún Leandra Mara da Silva
Factory Method Projeto de Sistemas de Software
1 Builder Padrões de projeto Projeto de Sistemas de Software Aleksander Bruno Gadelha Setembro, 2008.
Projeto de Sistemas de Software
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Padrões de Projeto Prototype.
Juliana França Santos Aquino
Abstract Factory – Gustavo Lopes Mourad.
Padrão Abstract Factory
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Singleton.
Template Method Intenção: definir o esqueleto de um algoritmo em uma operação, postergando (delegando) a definição de alguns passos desse algoritmo para.
Padrões GoF – Factory Method
Chain of Responsibility
Introdução ao paradigma de programação: Orientado a Objetos
MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP
Padrão de Construção Factory Method
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Geração de Código.
Padrão de Projeto Builder
CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO
Padrões de projeto detalhados Factory Method, Abstract Factory
Singleton e Adapter Professor: Nazareno Andrade
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Estudo de Caso: um editor de documentos
Orientação a Objetos Parte I
Programação Orientada à Objetos
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Padrões de Projeto.
1 Padrões de Software Padrões GoF (Parte 2) Eduardo Bezerra Outubro/2005.
Decorator POO - Avançado.
Interfaces POO Avançado.
Classes Abstratas e Interface
Design Patterns (Padrões de Projeto)
Trabalho Final de Padrões de Projeto
Classes Abstratas e Interfaces GX – Aula05 1.
Padrões de Projeto Abstract Factory.
Factory.
Abstract Factory Pattern Algumas aplicações precisam criar objetos de classes que podem mudar ex: elementos de um sistema GUI. –Diferentes padrões precisam.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: AbstractMethod Professores Eduardo Bezerra –
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto Alcides Calsavara
1 Padrões: Bridge (p. 151) Objetivo: separar uma abstração de sua implementação Sinônimos: Handle/Body.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Objetos Distribuídos Frameworks Orientados a Objetos.
Jobson Ronan Padrões GoF Jobson Ronan
Aula 6 – Padrão Factory Method
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula 7 – Padrão Abstract Factory
Aula 8 – Padrão Singleton
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Padrões Estruturais Tratam de compor classes e objetos para formar estruturas grandes e complexas.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Padrões de Projeto Aula 12 – Padrão Adapter. PADRÃO ADAPTER Soluções simples para problemas reais! 2.
Padrões Comportamentais Preocupam-se com algoritmos e a atribuição de responsabilidades entre objetos. Descrevem padrões de comunicação entre os objetos.
Transcrição da apresentação:

Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando.

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrões Criacionais zDe Classe yBaseados no uso de herança yFactoryMethod zDe Objeto yBaseados no uso de delegação yAbstractFactory, Builder, Prototype, Singleton

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão AbstractFactory (kit) zMeta yProvê uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. zMotivação yMuitas vezes um programa necessita criar famílias inteiras de objetos que se relacionam entre si

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. AbstractFactory Estrutura do Padrão AbstractFactory createProductA() createProductB() ConcreteFactory1 createProductA() createProductB() ConcreteFactory2 createProductA() createProductB() abstractProductA abstractProductB client productA2 productB2 productA1 productB1

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. AbstractFactory Participantes zAbstractFactory yDeclara uma interface para operações que criam objetos (produtos) abstratos zConcreteFactory yImplementa a operações para criar objetos (produtos) concretos zAbstractProduct yDeclara uma interface para um tipo de objeto (produto) zConcreteProduct yDefine um objeto (produto) para ser criado pela ConcreteFactory correspondente zClient yUsa apenas interfaces declaradas pela AbstractFactory e AbstractProduct

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. AbstractFactory Aplicabilidade zUse o Padrão AbstractFactory quando: yUm sistema deve ser independente de como seus produtos são criados, compostos e representados yUm sistema deve ser configurado com uma entre múltiplas famílias de produtos yUma família de produtos foi projetada para trabalhar em conjunto e você necessita garantir o cumprimento destas restrições yVocê quer fornecer uma biblioteca de produtos (biblioteca ou framework), mas quer revelar apenas as interfaces dos produtos, mas não suas implementações

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. AbstractFactory Colaborações zNormalmente uma única instância de uma fábrica concreta é criada em run-time yEsta fábrica concreta cria objetos (produtos) com uma implementação particular yPara criar produtos diferentes, clientes devem usar fábricas concretas diferentes zA AbstractFactory transfere a criação de objetos para as suas subclasses (ConcreteFactory)

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. AbstractFactory Conseqüências zIsola Fábricas Concretas zFacilita a Substituição de Famílias de Produtos zPromove Consistência Entre Produtos zSuporte a Novos Tipos de Produtos é difícil

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Builder zIntenção ySeparar construção da implementação de um objeto complexo, de modo que o mesmo processo de construção possa criar várias representações diferentes zMotivação yUm programa muitas vezes necessita ler um formato de documento (fonte) e convertê-lo em vários outros formatos diferentes (objeto). ySe os formatos (objeto) não são definidos a priori, é possível configurar o programa com um conversor (builder) que pode ser especializado em diferentes formatos e operações de conversão

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Builder Estrutura e Participantes Director construct() builder for all objects in structure { builder.buildPart(); } AbstractBuilder buildPart() Product1 ConcreteBuilder2 buildPart() getResult() Product2 ConcreteBuilde3r buildPart() getResult() Product3 builders ConcreteBuilder1 buildPart() getResult()

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Builder Colaborações aBuilder = new ConcreteBuilder() aClientaBuilderaDirector aDirector = new Director(aBuilder) aDirector.construct() aBuilder.buildPartA() aBuilder.buildPartB() aBuilder.buildPartC() aBuilder.getResult()

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Builder Aplicabilidade e Conseqüências zUse o Padrão Builder quando yO algoritmo para criar um objeto complexo deve ser independente das partes que constróem o objeto e de como elas são montadas yO processo de construção necessita fornecer representações diferentes para o objeto que é construído zConseqüências do Padrão Builder yPermite variar a representação interna de um produto yIsola os códigos de construção e representação yPermite controle fino sobre o processo de construção

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão FactoryMethod zIntenção yDefinir uma interface para criação de um objeto, mas deixar que subclasses decidam as classes dos objetos a instanciar zMotivação yFrameworks para criação de aplicações que trabalham sobre documentos necessitam ser refinados para definir exatamente qual a aplicação a ser criada, e qual o tipo de documento sobre a qual ela vai trabalhar

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão FactoryMethod Estrutura e Participantes... Product p = factoryMethod();... Creator factoryMethod() Product ConcreteCreator factoryMethod() ConcreteProduct operation() return new ConcreteProduct();

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão FactoryMethod Aplicabilidade e Conseqüências zUse o Padrão FactoryMethod quando: yUma classe não pode antecipar qual a classe do objeto que ela deve criar. yUma classe quer que suas subclasses definam o objeto que elas criam yClasses delegam responsabilidades para uma entre muitas subclasses auxiliares, e você quer limitar o conhecimento de qual subclasse auxiliar recebeu a delegação. zConseqüências yEliminam a necessidade de ligar classes específicas ao código yClientes necessitam criar subclasses sempre que precisam criar produtos yConectam hierarquias de classes paralelas

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Prototype zIntenção yEspecificar os tipos de objetos a criar usando uma instância prototípica, e criar novos objetos através da clonagem deste protótipo zMotivação yVocê deseja parametrizar o funcionamento de uma parte da aplicação mas não quer usar herança, pois a quantidade de subclasses diferentes seria muito grande

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Prototype Participantes e Colaboradores... p = prototype.clone();... Cliente Prototype clone() operation() ConcretePrototype1 clone() ConcretePrototype2 clone() prototype

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Prototype Aplicabilidade zUse o Padrão Prototype Quando: yUm sistema deve ser independente de como seus produtos são criados, compostos e representados, e xQuando as classes a instanciar são especificadas em run- time, por exemplo, através de carga dinâmica, ou; xQuando instâncias de uma classe podem ter apenas poucas combinações de estados. Fica então mais conveniente clonar objetos em vez de construir novos objetos

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Prototype Conseqüências zReduz o número de classes que os clientes conhecem zPermitem yQue o cliente trabalhe com classes específicas de uma aplicação, sem necessidade de recompilação yAdicionar e remover produtos em run-time yEspecificar novos objetos através da variação de valores yEspecificar novos objetos através de variação na estrutura yReduzir o número de subclasses yConfiguração dinâmica de aplicações zCada subclasse deve implementar o método clone()

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Singleton zIntenção yGarantir que uma classe contenha apenas uma instância e prover um ponto de acesso global a esta instância. zMotivação yPraticamente todo sistema possui uma classe que deve ter apenas uma única instância. xUma alternativa comumente usada em Java é tratar a classe como esta instância xEm muitas situações o padrão Singleton é mais indicado

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Singleton Estrutura e Participantes... return uniqueInstance;... Singleton static instance() singletonOperation() getSingletonData() static uniqueInstance; singletonData;

Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de Jorge H. C. Fernandes. Padrão Singleton Aplicabilidade zUse o padrão Singleton quando: yDeve existir exatamente uma instância de uma classe, e ela deve ser acessível a partir de um ponto bem conhecido