Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.

Slides:



Advertisements
Apresentações semelhantes
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Advertisements

Projeto de Sistemas de Software
Factory Method Projeto de Sistemas de Software
Padrão Bridge (Handle/Body)
Projeto de Sistemas de Software Fernando de Freitas Silva
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
Carlos R. M. Junior Eduardo Motta
Strategy Projeto de Sistemas de Software
Padrões de Projeto Prototype.
Abstract Factory – Gustavo Lopes Mourad.
Projeto de Sistemas de Software Leandra Mara da Silva
Padrão Abstract Factory
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.
Padrões GoF - Strategy.
Padrões GoF - Façade.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
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
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP
Geração de Código.
CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO
Fundamentos da Engenharia de Software
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
Tópicos avançados em internet A
Design Patterns Bridge
PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho.
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
POO II JEAN CARLO MENDES
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Prof.: Bruno Rafael de Oliveira Rodrigues.  Existe para poder servir de molde para outras classes.  Deve ser declarada tal usando-se a palavra chave.
Padrões de Projeto.
AULA 04 - POO. História 02 (usar interface): De acordo com o tipo do cliente implementar um método para dar desconto. Nesse processo está envolvido o.
Introdução Padrões de Projeto
Trabalho Final de Padrões de Projeto
Classes Abstratas e Interfaces GX – Aula05 1.
Construtores e Destrutores
Trabalho de Persistência para o EPOS. Problema Proposto Implementar no Epos objetos persistentes, ou seja, fazer com que o sistema, ao ser reiniciado,
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.
1 Java: Modificador abstract para classes e métodos Alcides Calsavara.
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Padrões de Projeto de Software Orientado a Objetos
1 Padrão: Iterador (Iterator) Tipo - “Object behavioral” Objetivo - acessar um agregado sem expor a representação Outros nomes - Cursor.
1 Padrões: Bridge (p. 151) Objetivo: separar uma abstração de sua implementação Sinônimos: Handle/Body.
Padrão Composite Definição
Jobson Ronan Padrões GoF Jobson Ronan
Processo e Qualidade.
Trabalho de Persistência para o EPOS. Propostas para a Solução Proposta 1: Usar templates, para que quando o usuário deseje que um objeto seja persistente,
Módulo II Capítulo 1: Orientação a Objetos
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Diagrama de Classes Herança Dependências.
Design Patterns Mediator Projeto de Sistemas de Software Kelly Leal.
Aula 7 – Padrão Abstract Factory
Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
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.
Padrões de Projeto Aula 14 – Padrão Abstract Factory.
Jean Carlo mendes
Transcrição da apresentação:

Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. Solução: crie uma interface para representar uma fábrica para cada família de objetos. As subclasses concretas instanciam cada família específica.

Abstract Factory (estrutura)

Abstract Factory (participantes) Fábrica Abstrata: declara uma interface para operações criam objetos-produto abstratos; Fábrica Concreta: implementa as operações para criar objetos-produto concretos; Produto Abstrato: declara uma interface para um tipo de objeto produto. Produto Concreto: implementa a interface abstrata de Produto Abstrato e define um objeto-produto a ser criado pela Fábrica Concreta correspondente. Cliente: utiliza apenas as interfaces declaradas por Fábrica Abstrata e Produto Abstrato.

Abstract Factory (conseqüências) Isola classes concretas: uma vez que uma fábrica encapsula a responsabilidade e o processo de criação de objetos-produto, ela isola clientes das classes de implementação. Fica mais fácil a troca de uma família de produtos, bastando trocar a fábrica concreta usada pela aplicação. Promove consistência entre produtos. O suporte a novos tipos de produtos é dificultado, já que a interface definida em AbstractFactory fixa o conjunto de produtos que podem ser criados. O suporte a novos tipos de produtos é dificultado, já que a interface da Fábrica Abstrata fixa o conjunto de produtos que podem ser criados. Para dar suporte a novos tipos de produtos, é necessário alterar a interface da fábrica, o que envolve alterações na Fábrica Abstrata e em todas as suas subclasses. Promove consistência entre produtos. Quando objetos-produto em uma família são projetados para trabalhar juntos, é importante que uma aplicação utilize apenas objetos desta família.

Instanciação - Alocação de memória no heap/inicialização Cliente -------> Fornecedor __________ serviços() Cliente --------> <<Interface>> ___________ servicos() <<Interface>> ___________ <---------- X servicos() <---------- Y <---------- Z

Não dá a instanciação (new) no objeto cliente porque senão o cliente, que seria a classe criadora, teria que conhecer toda a implementação, o que deixaria muito alto o acoplamento, por isso se cria uma classe Criador. A operação metodoFabrica() serve para retornar um objeto específico da criação da classe Produto. O Cliente não conhece a classe ProdutoConcreto diretamente. Pode ser usado no caso do DAO. Um criador concreto só instancia objetos de uma classe, já no abstract factory, pode-se instanciar mais de uma classe.

Abstract Factory (aplicabilidade) Este padrão é usado quando uma região de código deve ser independente de como os objetos que ela usa são criados, compostos e representados. Quando o sistema deve ser configurado com uma dentre várias famílias de produtos. É necessário fornecer uma biblioteca de classes, mas não é desejável revelar que produto particular está sendo usado. Quando uma família de produtos relacionados foi projetada para ser usada em conjunto, e esta restrição tem de ser garantida.

O problema do Linux é que eu poderia criar uma fábrica para botão, uma para combo box... seguindo o padrão acima, mas o cliente teria que conhecer todas elas. Por isso, deve-se criar com o abstract factory. A implementação do Abstract Factory usa a implementação do Factory Methos várias vezes. Para implementar as classes AbstractProductA ou AbstractProductB, tem que chamar a função create product A e create product B que se encontram na Abstract Factory e são implementados na Concrete Factory.

Abstract Factory (exemplo) Exemplo: portabilidade entre bibliotecas GUI (Gnome e KDE).