A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando."— Transcrição da apresentação:

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

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

3 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

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

5 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

6 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

7 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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)

8 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

9 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

10 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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()

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

12 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

13 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

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

15 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

16 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

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

18 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

19 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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()

20 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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

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

22 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br 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


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

Apresentações semelhantes


Anúncios Google